İki metni veya kodu satır ve sözcük düzeyinde vurgulayarak karşılaştırın. Yan yana ya da birleşik, boşluk yoksay, büyük/küçük harf yoksay — tamamen tarayıcınızda.
Hayır. Aracın tamamı bu sayfanın içinde çalışan JavaScript'tir. Diff algoritması (en uzun ortak alt dizi) işlemcinizde çalışır ve sonuç doğrudan DOM içine işlenir. DevTools → Network'ü açıp izleyin — diff sırasında hiçbir istek atılmaz. Şirket içi kod, müşteri verisi, sözleşme taslakları veya bir sunucu aracının kaydetmesini istemediğiniz her şeyi yapıştırmak güvenlidir.
Önce iki girdiyi de satırlara böler ve bir LCS (en uzun ortak alt dizi) algoritması çalıştırırız. Her iki tarafta eşleşen satırlar 'eşit' olarak işaretlenir. Eşleşmeyen satırlar, bir ekleme bir silmenin yanında göründüğünde 'değişiklik' satırları olarak eşleştirilir. Eşleşen her değişiklik için, satırın sözcükleri üzerinde (boşlukla bölerek) ikinci bir LCS çalıştırırız; böylece tüm satır değil, yalnızca düzenlenen sözcükler kırmızı/yeşil yanar.
Neden iKit Diff Denetleyici
Reklamsız, açılır pencere ve üçüncü taraf takipçi içermeyen, temiz ve hızlı bir metin diff alanı — geliştiriciler, yazarlar ve neyin değiştiğini görmesi gereken herkes için yapıldı.
Yan yana ve birleşik görünümler
Bölünmüş (iki sütun, klasik IDE hissi) ve birleşik (tek sütun, +/− işaretleriyle) görünümler arasında tek tıkla geçin. Her iki görünüm de satır numaraları gösterir ve tüm değişiklikleri satır içinde vurgular.
Sözcük düzeyinde vurgulama
İki satır değiştiğinde, ikinci bir sözcük düzeyi diff çalıştırırız; böylece tüm satır değil, yalnızca gerçek farklar parlar. 200 karakterlik bir satırdaki tek bir yazım hatasını fark etmek artık daha kolay.
Boşluk ve büyük/küçük harf yoksayma
Kozmetik değişiklikleri (yeniden biçimlendirilmiş girinti, büyük/küçük harf düzenlemeleri) süzmek ve gerçek düzenlemelere odaklanmak için boşluk ve harf duyarlılığını açıp kapatın.
Tasarım gereği gizlilik
Her iki metin de tarayıcı sekmenizde kalır. Diff algoritması yerel olarak JavaScript ile çalışır. DevTools → Network sekmesinden doğrulanabilir: yazarken hiçbir istek gönderilmez.
İstatistikler ve kopyalama
Kaç satırın eklendiğini, kaldırıldığını ve değiştirildiğini bir bakışta görün. Tek tıkla diff'i panoya kopyalayın ve kod incelemesine ya da commit mesajına yapıştırın.
Çevrimdışı çalışır
Sayfa yüklendikten sonra her bayt yerel olarak hesaplanır. Uçakta, kurumsal güvenlik duvarı arkasında veya ağsız ortamlarda çalışır — gizli kod incelemeleri için kullanışlıdır.
Bir diff denetleyici aslında nasıl çalışır
Arka plandaki matematik web'den eski — 1965'te LCS adlı bir algoritma ve 1986'da Eugene Myers tarafından geliştirilen iyileştirme.
1
Satırlara böl
Her iki girdi de \n (veya \r\n) üzerinden bölünür. Her satır bir belirteç haline gelir. Karakterleri değil, belirteçleri karşılaştırırız; çünkü gerçek dünyadaki kod ya da belgelerdeki düzenlemelerin çoğu tüm satırları ekler, kaldırır veya değiştirir.
2
LCS'yi hesapla
En Uzun Ortak Alt Dizi, her iki girdide de aynı sırada görünen en büyük satır kümesidir. Sağ alttan başlayarak bir DP tablosu doldururuz; her hücre o konumdan sona kadar olan LCS uzunluğunu tutar. Bu, O(m × n) zaman ve bellek alır.
3
İşlemleri türetmek için geri yürü
Tablonun sol üstünden başlayarak ileri yürürüz: iki mevcut satır eşleşirse eşit çıktısı veririz; aksi halde LCS uzunluğunu koruyan yönü (sağa veya aşağı) seçer ve bir silme ya da ekleme çıktısı veririz. Sonuç, Orijinali Değiştirilmişe dönüştüren bir işlem dizisidir.
4
Değiştirilmiş çiftler içinde sözcük düzeyi diff
Bir silmeyi bir ekleme izlediğinde, bunları bir değişiklik satırı olarak eşleştiririz. Satır içinde yalnızca farklı olan kısımları vurgulamak için, aynı LCS algoritmasını her iki tarafın sözcükleri üzerinde, boşluk sınırlarına göre bölerek ikinci kez çalıştırırız.
Yaygın diff görevleri
Bir diff denetleyiciye başvuracağınız gerçek durumlar.
Yorum yapmadan önce bir PR incelemek
GitHub'ın diff görünümü harikadır, ancak bazen biçimlendirici gürültüsü olmadan yalnızca içeriksel değişiklikleri görmek istersiniz. Her iki sürümü yapıştırın, Boşlukları yoksay seçeneğini açın; kozmetik yeniden biçimlendirmeler kaybolur ve geride yalnızca mantık düzenlemeleri kalır.
İki sözleşme taslağını karşılaştırmak
Hukukçular ve operasyon ekipleri çoğu zaman bir sözleşmenin v1 ile v2 arasında neyin değiştiğini bilmek ister. Her ikisini yapıştırın; sözcük düzeyinde vurgulu renkli bir diff alın — Word yok, Değişiklikleri İzle yok, gizli koşulların üçüncü taraf bir sunucuya yüklenmesi yok.
Bir betik düzenlemesinin gerçekte ne yaptığını kontrol etmek
Bir yapılandırma dosyası üzerinde sed/awk/Python regex çalıştırdınız mı? Orijinali ve sonucu buraya yapıştırarak betiğin yalnızca beklediğiniz şeyi düzenlediğini doğrulayın. Karakter düzeyindeki vurgu, hızlı görsel taramada kaçırılan sapmaları yakalar.
Çevrilmiş metinde yazım hatası bulmak
Çeviri çifti (kaynak ile çeviri ya da aynı kaynağın iki çevirisi) — sözcük düzeyindeki diff, eksik bir sözcüğü, tekrarlanmış bir ifadeyi veya redaktörlerin kaçırdığı bir noktalama hatasını bulmayı önemsiz hale getirir.
Yerel diff'lemenin neden önemli olduğu
Karşılaştırdığınız metinler genellikle özeldir: dahili depolardan kod, sözleşme taslakları, müşteri verisi dışa aktarımları veya yayınlanmamış ürün metinleri. Bunları bir yabancının sunucusuna yapıştırmak, kontrolünüzde olmayan bir kayıt izi oluşturur. iKit'in diff denetleyicisi tarayıcı sekmenize zaten yüklü olan JavaScript'tir — karşılaştırma işlemcinizde çalışır ve bir ağ soketine asla dokunmaz.
Diff sırasında sıfır ağ isteği — DevTools → Network'te doğrulanabilir.
Girdiler tarayıcı belleğinde kalır; Temizle veya sayfa yenilemesinde silinir.
Dahili kod, NDA korumalı belgeler, müşteri destek dökümleri ve veri yerleşim politikaları kapsamındaki her şey için güvenlidir.
Related guides
Deep-dive tutorials and tool comparisons from the iKit blog.
Hayır. Aracın tamamı bu sayfanın içinde çalışan JavaScript'tir. Diff algoritması (en uzun ortak alt dizi) işlemcinizde çalışır ve sonuç doğrudan DOM içine işlenir. DevTools → Network'ü açıp izleyin — diff sırasında hiçbir istek atılmaz. Şirket içi kod, müşteri verisi, sözleşme taslakları veya bir sunucu aracının kaydetmesini istemediğiniz her şeyi yapıştırmak güvenlidir.
Satır ve sözcük düzeyindeki vurgulama nasıl çalışır?
Önce iki girdiyi de satırlara böler ve bir LCS (en uzun ortak alt dizi) algoritması çalıştırırız. Her iki tarafta eşleşen satırlar 'eşit' olarak işaretlenir. Eşleşmeyen satırlar, bir ekleme bir silmenin yanında göründüğünde 'değişiklik' satırları olarak eşleştirilir. Eşleşen her değişiklik için, satırın sözcükleri üzerinde (boşlukla bölerek) ikinci bir LCS çalıştırırız; böylece tüm satır değil, yalnızca düzenlenen sözcükler kırmızı/yeşil yanar.
Bölünmüş ve Birleşik görünüm arasındaki fark nedir?
Bölünmüş görünüm iki metni eşleşmiş satır numaralarıyla yan yana gösterir — IDE'lerdeki (VS Code, JetBrains) diff görünümüne yakındır. Birleşik görünüm ise +/− önekli satırlarla tek sütun gösterir — `git diff` çıktısına yakındır. İş akışınıza uyanı seçin; her ikisi de aynı veriyi işler.
'Boşlukları yoksay' neden işe yarar?
Kodu yeniden biçimlendirmek (Prettier çalıştırmak, sekme/boşluk değiştirmek, satır sonlarını normalleştirmek) gerçek değişiklikleri gizleyen görsel gürültü ekler. 'Boşlukları yoksay' seçeneği, diff öncesinde ardışık boşluk/sekmeleri tek bir boşluğa indirir ve satır kenarlarını kırpar — böylece yalnızca anlamlı düzenlemeleri görürsünüz, kozmetik olanları değil.
Tarayıcıda diff'leyebileceğim en büyük girdi nedir?
LCS algoritması, m ve n her iki taraftaki satır sayıları olmak üzere O(m × n) bellek kullanır. iKit, karşılaştırmayı ~4 milyon hücreyle (≈16 MB) sınırlar; bu da birkaç bin satıra karşı birkaç bin satırı rahatlıkla kaldırır. Daha büyük diff'ler için (tüm veritabanı dökümleri, tam dosya günlükleri) `diff` veya `git diff --no-index` gibi bir CLI aracı kullanın — bunlar milyonlarca satıra ölçeklenen daha akıllı bir algoritma (Myers diff) kullanır.