git diff - bana satır sonundaki değişiklikleri göster?


86

Editörüm kaynak dosyalarımın satır sonlarını değiştiriyor. Bunu yaptığımda git diff, aynı çizgiyi görünür bir fark olmaksızın iki kez görüyorum - biri ile -ve biri ile +-.

Nasıl alırım git diffbu değişiklik aslında ne olduğunu bana göstermek için?


Yakınlarında yinelenen bu (aynı zamanda aşağıda belirtilen): benim favorimgit config diff.wsErrorHighlight all
Joshua Goldberg

Yanıtlar:


64

Öncelikle, renkli çıktıyı kullandığınızdan (örn. İle git diff --color) ve beyaz boşluk vurgulamayı (örn.) İle etkinleştirdiğinizden emin olun.

git config color.diff.whitespace "red reverse"

Ancak, kaldırılan satırlar gitiçin sondaki beyaz boşluğu vurgulamadığından , bu her durumda işe yaramayabilir . Sildiğiniz beyaz alanları görmek için şunu kullanın:

git diff -R

beyaz boşluğu, vurgulandığı karşılaştırmanın 'eklenen' tarafına koymak için.

Daha fazla ayrıntı için, bu SO sorusundaki yanıtlara bakın .


Git 2.1.4 sürümüne sahibim ve git config komut önerisine göre hareket ettim. Ancak git diff hala herhangi bir fark göstermiyor. Git diff'i hexdump -C'ye aktarırsam, orada hiçbir şey görünmez: 000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|7d, '}' küme ayracını ifade eder.
cardiff uzay adamı

37

Aşağıdaki komutla satır sonu farkını görebilirsiniz.

git diff | cat -v

Sonra CRLF (DOS) ile biten "^ M" yazdırılır, LF (Unix) biten için hiçbir şey yazdırılmaz.

Görünüşe göre git diff doğru şeyi yapıyor, CRLF sonlandırması için CR ve LF karakterleri yazdırıyor. Ancak CR konsol tarafından tüketildiği için göremiyoruz. Cat -v kullanarak onu görünür hale getirebiliriz.


bir başka benzer yaklaşım da git diff > somediff && vi somediff, vim CRLF'yi ^ M olarak gösterir. ama cat -vdüzgün.
Nick X

1
+1, 20 yıl kullandıktan sonra, catfarkında olmadığım bir seçeneği öğrenmeme izin verdiği için en azından +1 değil . :-)
Harald

25

Beyaz boşluk değişikliklerini görmenin bir yolu, karakter bazında "farklı kelime farkı" ile

git diff --color --word-diff-regex=.

Bu , satırlardaki her yerdeki tüm beyaz boşluk değişikliklerini vurgular . Kaldırılan boşluk sarılır [-ve -]ve boşluk ilave {+ve +}.

Alternatif olarak, Alex'in önerdiği gibi

git diff --color --ws-error-highlight=new,old

satırların sonlarındaki tüm boşluk değişikliklerini vurgular .


12
git diff --ws-error-highlight=new,old

değiştirilen satırlarda boşluk farklılıklarını vurgular.


Git'in hangi sürümünü kullanıyorsunuz? Sistemimdeki git 2.1.4 --ws-error-highlights = new, eski geçersiz bir seçenek.
cardiff uzay adamı

Bu seçenek 2015 yılında 2.5.0 sürümüne eklenmiştir.
MiniGod

5

Grafiksel bir fark aracı size değişikliği daha iyi gösterecektir - deneyin git difftool.

Meld kullanın ve tercihleri ​​beyaz boşluk gösterecek şekilde ayarlayın. (Düzen -> Tercihler -> Boşluğu Göster.)

Diğer grafik araçların muhtemelen benzer seçenekleri vardır - @ Cotton'un cevabı + yorumu size bunu vimdiff ile nasıl yapacağınızı söyler.


Grafiksel bir fark aracı mevcut olmayabilir. @ Paul-whittaker'ın cevabı, sorunun ima ettiği bağlamda çalışacaktır (bazı terminal).
18'de

Şimdi bu garip, ama git difftool --tool=meld doesn'tmeld bile başlat. Bir geri ödeme işleminin devam edip etmediğini bilmiyorum.
cardiff uzay adamı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.