Diff Checker

İki Metni Karşılaştırma Online: Yan Yana Diff Aracı

İki metin bloğu yapıştırın ve eklemeleri, silmeleri ve değişiklikleri vurgulanmış olarak görün. Karakter düzeyinde diff ile yan yana veya satır içi görünüm.

Verileriniz tarayıcınızdan çıkmaz.

Diff görmek için iki alana da metin gir

Bu Örnek Ne Gösteriyor

Yukarıdaki iki fonksiyon, farklı yaklaşımlar kullanarak aynı sonucu hesaplar. Orijinal, değişebilir bir let değişkeni ile imperatif bir for döngüsü kullanır. Değiştirilmiş sürüm, const bağlaması ile Array.reduce kullanır. Diff, bu yeniden düzenleme sırasında tam olarak neyin değiştiğini vurgular.

Yan yana görünüm, soldan hangi satırların kaldırıldığını ve sağa hangilerinin eklendiğini netleştirir. Fonksiyon imzası ve return ifadesi değişmemiştir. Orijinalin üç orta satırı, değiştirilmiş sürümde dört satır olur.

Diff Algoritmaları Nasıl Çalışır

Myers algoritması

Myers algoritması, orijinal Unix diff komutu da dahil olmak üzere çoğu diff aracının temelidir. Karşılaştırmayı en kısa düzenleme betiği problemi olarak modeller: iki satır dizisi verildiğinde, birinciyi ikinciye dönüştürmek için minimum sayıda ekleme ve silme bulunur.

Algoritma, sol üstten sağ alta her yolun olası bir düzenleme dizisini temsil ettiği bir grafik üzerinde çalışır. Çapraz hareket etmek, satırların eşleştiği anlamına gelir (düzenleme gerekmez). Sağa hareket etmek ekleme anlamına gelir. Aşağı hareket etmek silme anlamına gelir. Myers, bu grafikteki en kısa yolu bulur, bu da en az düzenlemeye karşılık gelir.

Patience diff

Patience diff alternatif bir algoritmadır. İlk olarak her dosyada tam olarak bir kez görünen satırları (benzersiz satırlar) belirler, bunları bağlantı noktası olarak kullanır ve ardından bağlantı noktaları arasındaki bölgelerde tekrarlar. Bu, kod önemli ölçüde yeniden düzenlendiğinde daha temiz diff’ler üretir çünkü benzersiz satırlar yapısal işaretler olarak hareket eder. Git, git diff --patience çalıştırdığınızda varsayılan olarak patience diff kullanır.

Karakter düzeyinde vurgulama

Hangi satırların değiştiğini bulduktan sonra, bir diff aracı aynı algoritmayı değiştirilen her satır içinde karakter düzeyinde uygulayabilir. Bu, yalnızca bir satırın değiştiğini değil, tam olarak hangi karakterlerin eklendiğini veya kaldırıldığını gösterir. Kod incelemesi için bu en kullanışlı görünümdür: let kırmızı vurgulanmış ve const yeşil vurgulanmış olarak görürsünüz, iki satırı zihinsel olarak karşılaştırmak zorunda kalmazsınız.

Unified Diff Formatını Anlama

git diff veya diff -u çalıştırdığınızda, çıktı unified formatını kullanır. İşte bu iki fonksiyon arasındaki diff’in unified diff olarak nasıl görüneceğine dair bir örnek:

@@ -1,7 +1,8 @@
 function calculateTotal(items) {
-  let total = 0;
-  for (let i = 0; i < items.length; i++) {
-    total += items[i].price * items[i].quantity;
-  }
+  const total = items.reduce(
+    (sum, item) => sum + item.price * item.quantity,
+    0
+  );
   return total;
 }

@@ -1,7 +1,8 @@ başlığı şunu söyler: bu yığın orijinalin 1. satırında başlar (7 satır gösterilir) ve değiştirilmişin 1. satırında (8 satır gösterilir). - ön ekli satırlar kaldırılır. + ön ekli satırlar eklenir. Boşluk ön ekli satırlar bağlamdır, her iki sürümde de bulunur.

Yan Yana ve Satır İçi Görünüm

Her iki görünüm de aynı değişiklikleri gösterir. Seçim, karşılaştırdığınız içerik türüne bağlıdır.

Yan yana, orijinali sola ve değiştirilmişi sağa yerleştirir. Aynı anda her sürümün tam bağlamını görmek istediğiniz kod ve yapılandırılmış metin için daha iyidir. Yatay hizalama, karşılık gelen bölümleri taramayı kolaylaştırır.

Satır içi görünüm, kaldırılan ve eklenen satırları tek bir sütunda sırayla gösterir. Daha kompakttır ve yatay alanın sınırlı olduğu uzun belgeler için veya satır karşılığını izlemektense diff’i yukarıdan aşağıya okumanın daha önemli olduğu metinler için daha iyidir.

Online Diff vs Git Diff Ne Zaman Kullanılır

Git diff yalnızca bir git reposundaki dosyalar üzerinde çalışır. Bir repo dışındaki içerikler için veya dosya olarak var olmayan şeyleri (tarayıcıdan kopyalanan API yanıtları, log çıktısı, bir sunucudan kopyalanan yapılandırma) karşılaştırmak için çevrimiçi bir diff aracı pratik seçimdir.

Online diff aracının git’ten daha hızlı olduğu yaygın durumlar: