alltools.one
Development
2025-07-02
7 min
alltools.one Team
DiffText ComparisonGitCode ReviewMerge

Cara Membandingkan File Teks: Alat dan Teknik Diff

Membandingkan teks adalah tugas harian bagi pengembang. Baik saat mereview perubahan kode, men-debug penyimpangan konfigurasi, atau menggabungkan dokumen, memahami output diff sangat penting. Panduan ini membahas algoritma, alat, dan teknik untuk perbandingan teks yang efektif.

Memahami Output Diff

Format unified diff klasik menunjukkan perubahan antara dua file:

--- original.txt
+++ modified.txt
@@ -1,5 +1,6 @@
 Line 1: unchanged
-Line 2: removed text
+Line 2: modified text
+Line 2.5: added line
 Line 3: unchanged
 Line 4: unchanged
-Line 5: also removed
  • Baris yang dimulai dengan - telah dihapus (dari yang asli)
  • Baris yang dimulai dengan + telah ditambahkan (di versi yang dimodifikasi)
  • Baris yang dimulai dengan (spasi) tidak berubah sebagai konteks
  • Penanda @@ menunjukkan nomor baris yang terpengaruh

Algoritma Diff

Algoritma Myers

Algoritma default yang digunakan oleh Git dan sebagian besar alat diff. Algoritma ini menemukan skrip edit terpendek — jumlah minimum penyisipan dan penghapusan untuk mengubah satu file menjadi file lainnya. Ini menghasilkan diff yang bersih dan mudah dibaca untuk sebagian besar konten.

Patience Diff

Lebih baik untuk teks terstruktur seperti kode sumber. Alih-alih menemukan edit terpendek, algoritma ini terlebih dahulu mencocokkan baris unik yang muncul di kedua file, kemudian melakukan diff pada bagian di antaranya. Ini sering menghasilkan diff yang lebih bermakna yang selaras dengan blok kode logis.

git diff --patience

Histogram Diff

Peningkatan dari patience diff, digunakan sebagai default Git sejak versi 2.x. Algoritma ini menangani baris berulang dengan lebih baik dan menghasilkan output yang lebih bersih untuk file dengan perubahan struktural yang signifikan.

Membandingkan Teks Secara Online

Untuk perbandingan cepat tanpa menginstal alat, Pemeriksa Diff Teks kami menyediakan tampilan diff berdampingan dan inline langsung di browser Anda. Tempelkan dua teks, dan lihat perubahan yang disorot secara instan — semua pemrosesan terjadi secara lokal.

Alat Diff Baris Perintah

diff (POSIX)

Alat klasik Unix:

# Unified format (most readable)
diff -u file1.txt file2.txt

# Side-by-side
diff -y file1.txt file2.txt

# Ignore whitespace
diff -w file1.txt file2.txt

# Recursive directory comparison
diff -r dir1/ dir2/

git diff

Bahkan di luar repositori Git, git diff memberikan output yang lebih baik:

# Compare two files
git diff --no-index file1.txt file2.txt

# Word-level diff (highlights changed words, not whole lines)
git diff --word-diff

# Stat summary (files changed, insertions, deletions)
git diff --stat

colordiff / delta

Untuk output terminal berwarna:

# colordiff: drop-in replacement for diff
colordiff file1.txt file2.txt

# delta: modern diff viewer for Git
git diff | delta

Diff untuk Review Kode

Review kode yang efektif bergantung pada diff yang mudah dibaca. Berikut teknik untuk meningkatkan kualitas diff:

1. Jaga Commit Tetap Fokus

Diff besar yang mencakup ratusan baris sulit di-review. Setiap commit seharusnya menangani satu hal:

  • Pisahkan perubahan format dari perubahan logika
  • Bagi refaktor besar menjadi langkah-langkah bertahap
  • Pindahkan file dalam satu commit, modifikasi di commit lain

2. Gunakan Diff Tingkat Kata

Diff tingkat baris menyembunyikan perubahan sebenarnya ketika sebuah baris memiliki modifikasi kecil yang terpendam dalam string panjang:

# Shows only the changed words, not entire lines
git diff --word-diff

3. Abaikan Spasi Putih dalam Review

Perubahan format menambahkan noise pada diff yang bermakna:

git diff -w        # Ignore all whitespace changes
git diff -b        # Ignore whitespace amount changes

4. Review dengan Konteks

Lebih banyak baris konteks membantu memahami kode di sekitarnya:

git diff -U10      # Show 10 lines of context (default is 3)

Menangani Konflik Merge

Ketika Git menemukan perubahan yang bertentangan, Git menandai konflik dalam file:

<<<<<<< HEAD
const timeout = 5000;
=======
const timeout = 10000;
>>>>>>> feature-branch

Untuk menyelesaikan:

  1. Pahami kedua perubahan — mengapa masing-masing dibuat?
  2. Putuskan versi mana yang dipertahankan, atau gabungkan keduanya
  3. Hapus penanda konflik
  4. Uji hasilnya

Untuk merge yang kompleks, gunakan alat merge tiga arah yang menampilkan ancestor bersama bersama kedua versi.

Membandingkan Konten Non-Teks

JSON Diff

Diff teks standar kesulitan dengan JSON karena urutan key dan perubahan format menghasilkan noise. Diff JSON semantik membandingkan struktur data yang sebenarnya. Periksa alat JSON Diff kami untuk perbandingan struktural.

CSV Diff

Data tabel membutuhkan perbandingan yang sadar kolom. Diff standar memperlakukan setiap baris sebagai string, melewatkan perubahan tingkat sel.

File Biner

Diff tidak dapat membandingkan file biner secara bermakna. Untuk gambar, gunakan alat diff visual. Untuk dokumen, konversi ke teks terlebih dahulu atau gunakan alat perbandingan khusus format.

Diff dalam Otomatisasi

Pipeline CI/CD

Gunakan diff untuk memverifikasi output yang diharapkan dalam pengujian:

command_under_test > actual_output.txt
diff expected_output.txt actual_output.txt
# Exit code 0 = identical, 1 = different

Deteksi Penyimpangan Konfigurasi

Bandingkan konfigurasi produksi dengan keadaan yang diharapkan:

diff deployed_config.yaml expected_config.yaml

Pelacakan Perubahan Dokumentasi

Lacak perubahan dalam dokumentasi untuk review:

git diff --stat HEAD~5..HEAD -- docs/

FAQ

Apa arti "hunk" dalam output diff?

Hunk adalah blok perubahan yang berdekatan dalam sebuah diff. Setiap baris @@ memulai hunk baru. Git mengelompokkan perubahan yang berdekatan menjadi satu hunk — jika dua perubahan berada dalam 3 baris satu sama lain (konteks default), mereka muncul dalam hunk yang sama. Hunk dapat di-stage secara independen menggunakan git add -p.

Bagaimana cara membandingkan dua branch di Git?

Gunakan git diff branch1..branch2 untuk melihat semua perbedaan antara dua branch. Tambahkan --stat untuk ringkasan, atau -- path/to/file untuk membandingkan file tertentu. Untuk membandingkan apa yang telah ditambahkan branch sejak bercabang, gunakan tiga titik: git diff branch1...branch2.

Sumber Terkait

Published on 2025-07-02
How to Compare Text Files: Diff Tools and Techniques | alltools.one