Diffs
Apa arti “diff”?
Diffing berarti membandingkan dua versi dari sesuatu untuk melihat:
- Apa yang berubah
- Apa yang ditambahkan
- Apa yang dihapus
Ini bisa dilakukan dengan:
- Alat UNIX standar (
diff) - Perintah Git (
git diff)
Menggunakan perintah UNIX diff
Perintah UNIX diff standar membandingkan:
- Dua file
- Atau dua direktori (secara rekursif)
Perbandingan file sederhana
Misalkan:
file1
Ini adalah isi dari sebuah file sederhana.
file2
Ini adalah isi dari sebuah file yang sedikit berbeda.
Jalankan:
diff file1 file2
Contoh keluaran:
2,3c2,3
< isi
< dari sebuah
---
> isi dari sebuah yang sedikit
> berbeda
Keluaran ini benar, tetapi tidak terlalu mudah dibaca.
Unified diff (direkomendasikan)
Kebanyakan orang menggunakan format unified diff dengan -u:
diff -u file1 file2
Contoh keluaran:
--- file1
+++ file2
@@ -1,4 +1,4 @@
Ini adalah
-isi
-dari sebuah
+isi dari sebuah yang sedikit
+berbeda
file.
Cara membaca keluaran unified diff
---→ file asli+++→ file baru@@→ konteks nomor baris-→ baris yang dihapus+→ baris yang ditambahkan- Tanpa simbol → konteks tidak berubah
Format ini juga digunakan oleh alat patch.
Diff direktori
Untuk membandingkan dua struktur direktori:
diff -Nur directory1 directory2
Penjelasan opsi umum
-r→ rekursif (memeriksa subdirektori)-N→ menampilkan file yang ditambahkan atau dihapus-u→ keluaran unified
Ini berguna saat membandingkan dua folder proyek.
Diff dengan Git
Git menyediakan alat diff yang lebih kuat dan praktis.
Git diff dasar
git diff
Menampilkan perbedaan antara:
- Direktori kerja Anda
- Commit terakhir (HEAD)
Membandingkan direktori kerja dengan sebuah commit
git diff earlier_commit
Membandingkan file saat ini dengan commit atau branch tertentu.
Membandingkan perubahan yang sudah di-stage
git diff --cached
atau (lebih intuitif):
git diff --staged
Menampilkan apa yang sudah di-stage dan akan masuk ke commit berikutnya.
Anda juga dapat membandingkan perubahan yang di-stage dengan sebuah commit:
git diff --cached earlier_commit
Membandingkan dua commit
git diff commit1 commit2
Menampilkan secara tepat apa yang berubah di antara dua commit.
Opsi git diff yang berguna
- Abaikan spasi:
git diff --ignore-all-space
- Tampilkan ringkasan statistik:
git diff --stat
- Tampilkan statistik numerik:
git diff --numstat
Membatasi diff ke bagian proyek tertentu
Anda dapat memfokuskan diff pada direktori tertentu.
Contoh (repositori kernel Linux):
git diff v4.2.1 v4.2.2 Documentation/vm
Hanya menampilkan perubahan di dalam Documentation/vm.
Menampilkan statistik untuk subdirektori
git diff --stat v4.2.1 v4.2.2 arch/x86_64
Menampilkan ringkasan singkat alih-alih diff lengkap.
diffmembandingkan file atau direktoridiff -umemberikan keluaran standar yang mudah dibacagit difflebih kuat dan memahami konteks Git- Anda dapat membandingkan file kerja, file yang di-stage, commit, atau direktori
- Sangat penting untuk meninjau perubahan sebelum melakukan commit