DokumenGambarMediaAlat PDF

Bandingkan Teks Online — Diff Dua Teks

Bandingkan versi kode, kontrak, dan artikel, lalu visualisasikan setiap perubahan dengan kode warna.

Diproses di browser Anda - tidak ada teks yang dikirim ke server mana pun

Perbedaan terlihat dalam hitungan detik

Diff baris dan karakter

Visualisasikan perubahan di tingkat baris dan tingkat karakter dalam setiap baris yang dimodifikasi.

100% privat

Perbandingan terjadi di browser Anda. Teks tidak pernah dikirim ke server mana pun.

Algoritma Myers

Implementasi algoritma Myers diff O(n+d), algoritma yang sama yang digunakan git secara internal.

Instan

Hasil muncul saat Anda menempel teks, tanpa perlu menekan tombol konversi.

Tiga langkah, tanpa kerumitan

1

Tempel dua teks

Masukkan teks asli di panel kiri dan teks yang sudah dimodifikasi di panel kanan. Keduanya bisa berupa kode, dokumen, atau teks biasa apa pun.

2

Visualisasikan perbedaannya

Baris yang ditambahkan ditampilkan dengan warna hijau, baris yang dihapus dengan warna merah, dan baris yang dimodifikasi memperlihatkan perubahan tepat hingga tingkat karakter.

3

Analisis perubahannya

Navigasi antar perbedaan menggunakan tombol sebelumnya dan berikutnya. Lihat ringkasan baris yang ditambahkan, dihapus, dan tidak berubah.

Ada pertanyaan?

Algoritma diff modern didasarkan pada komputasi LCS (Longest Common Subsequence). Diberikan dua teks A dan B, algoritma menemukan urutan baris terpanjang yang muncul di keduanya dengan urutan yang sama. Baris dari A yang tidak termasuk LCS ditandai sebagai dihapus (merah), sedangkan baris dari B yang tidak termasuk ditandai sebagai ditambahkan (hijau). Algoritma Hunt-McIlroy tahun 1975 yang digunakan pada perintah diff Unix asli memformalkan pendekatan ini.

Hijau menandakan baris yang ditambahkan dalam teks baru yang tidak ada di teks asli. Merah menandakan baris yang dihapus dari teks asli dan tidak lagi ada. Kuning atau tanpa warna menandakan baris yang tidak berubah (konteks). Dalam mode diff per karakter, karakter baru dalam baris yang dimodifikasi disorot dengan hijau tua, sedangkan karakter yang dihapus disorot dengan merah tua, sehingga perubahan tepat dalam baris terlihat jelas.

Diff baris per baris memperlakukan setiap baris sebagai unit atomik: sebuah baris ada atau tidak ada, persis seperti yang dilakukan git diff. Cara ini ideal untuk kode di mana perubahan terjadi di seluruh baris. Diff karakter per karakter beroperasi di dalam setiap baris yang dimodifikasi dan menunjukkan karakter atau kata mana yang berubah. Cara ini lebih berguna untuk prosa, kontrak, atau teks di mana perubahan adalah suntingan kecil di dalam paragraf.

Diff sangat penting dalam kontrol versi seperti git diff yang menampilkan perubahan sebelum commit, tinjauan kode seperti pull request di GitHub, perbandingan dokumen hukum antara versi, jurnalisme dan pemeriksaan fakta dengan membandingkan versi siaran pers, serta debugging dengan membandingkan output yang diharapkan dan aktual dalam pengujian. Diff juga digunakan dalam patch perangkat lunak karena file .patch adalah unified diff yang dapat diterapkan oleh git apply.

LCS (Longest Common Subsequence) adalah masalah menemukan subsequence terpanjang yang dimiliki bersama oleh dua urutan tanpa menyusun ulang elemen. Untuk diff teks, urutannya adalah baris-baris teks. LCS mewakili baris yang tidak berubah; semua yang tidak ada dalam LCS adalah perubahan. Algoritma pemrograman dinamis standar untuk LCS memiliki kompleksitas O(n kali m) di mana n dan m adalah panjang kedua urutan, meski algoritma yang lebih efisien seperti Myers diff tahun 1986 mencapai O(n ditambah d) di mana d adalah jumlah perbedaan.

Cara kerja diff teks: dari perintah Unix hingga git

Perintah diff diperkenalkan di Unix oleh Doug McIlroy pada tahun 1974 dan menjadi alat fundamental dalam ekosistem Unix. Algoritma aslinya yang diformalkan oleh Hunt dan McIlroy dalam makalah berjudul An Algorithm for Differential File Comparison pada tahun 1975 menghitung subsequence umum terpanjang antara dua file dan mengekspresikan perbedaannya sebagai kumpulan minimal operasi penyisipan dan penghapusan. Prinsip matematis ini tetap menjadi fondasi semua alat diff modern.

Pada tahun 1986, Eugene Myers menerbitkan algoritma yang lebih baik yang mengurangi kompleksitas menjadi O(n+d) di mana d adalah jumlah perbedaan, sehingga jauh lebih cepat ketika file serupa. Inilah algoritma yang digunakan Git secara internal untuk git diff, git log -p, dan tampilan pull request di GitHub serta GitLab. Format unified diff dengan baris yang diawali tanda plus, minus, dan spasi telah menjadi standar universal untuk berbagi patch antar proyek perangkat lunak.

Di luar kode, diff memiliki aplikasi dalam jurnalisme data untuk membandingkan versi dokumen resmi, hukum untuk mendeteksi perubahan antar versi kontrak, dan sains untuk membandingkan urutan genomik. Convertir.ai mengimplementasikan algoritma Myers diff sepenuhnya di browser, dengan visualisasi tingkat baris dan tingkat karakter, tanpa mengirim teks ke server mana pun. Ini sangat relevan untuk membandingkan dokumen rahasia seperti kontrak, kode kepemilikan, atau data sensitif.