iki farklı dosya arasında git fark


112

In HEAD(en son taahhüt), adlı bir dosya var foo. Mevcut çalışma ağacımda, olarak yeniden adlandırdım barve düzenledim.

Ben istiyorum git diff fooiçinde HEADve barbenim şimdiki çalışma ağacında.


65
Bu sorunun (başlıktan), bir depoda olması gerekmeyen iki dosyada git diff kullanmakla ilgili olabileceğini düşündüm. git diff --no-index --word-diff old_file.txt new_file.txt--No -index bayrağının bunun için olduğunu buldum , örneğin (--word-diff, uzun metin için çok yararlı olan, sadece satıra değil, değişiklikleri kelimeye göre vurgular).
Pat

Yanıtlar:


139

Yolları açıkça belirtin:

git diff HEAD:full/path/to/foo full/path/to/bar

Dokümanlardaki--find-renames seçeneği kontrol edin .git-diff

Kredi: twaggs .


10
git diff <path> <path>Git deposunda olmasalar bile kullanarak herhangi iki dosyayı karşılaştırabileceğinizi belirtmek isterim .
mitenka

1
@mitenka Bunun doğru olduğunu sanmıyorum. Eğer bakarsanız git diff --helpiki dosya için desteklenen tek desenler olduğunu göreceksiniz git diff [<options>] --no-index [--] <path> <path>. git diff a byalnızca commit kalıplarıyla eşleşir, dosyalarla değil.
Doug

@Doug İşte bahsettiğiniz yardım komutundan alıntı : git-scm.com/docs/git-diff : Diskteki iki dosya arasındaki değişiklikleri göster [...].
mitenka

@mitenka yardım diyor, '--no-index' kullanmadığınız sürece dosyaları karşılaştırmaz; yorumunuz ayrı bir cevap olmalıdır; bu doğru değil ve bu cevapla alakalı değil.
Doug

1
@Doug Fikriniz için teşekkür ederiz. İşte başvurduğunuz yardımdan alıntı: --no-indexKomutu Git tarafından kontrol edilen bir çalışma ağacında ve çalışma ağacının dışındaki yol noktalarından en az birinde çalıştırırken veya komutu Git tarafından kontrol edilen bir çalışma ağacının dışında çalıştırırken seçeneği atlayabilirsiniz. .
mitenka

81

Kullanmanın --no-indexaradığınız şey olduğuna inanıyorum :

git diff [<options>] --no-index [--] <path> <path>

git kılavuzunda belirtildiği gibi:

Bu form, dosya sistemindeki verilen iki yolu karşılaştırmak içindir. Sen edebilirsiniz ihmal--no-index Git tarafından ve kontrollü bir çalışma ağaçta komutunu çalıştırırken seçeneği en azından dışında yollar noktalarından biri çalışma ağaç veya dışında komutu çalıştırarak Git tarafından kontrol edilen bir çalışma ağacın.


1
@swe, bu kesinlikle yararlı bir cevap, ancak OP, dosyanın HEAD'de olduğunu özellikle belirtti, bu da onun git dizininde olduğu anlamına geliyor. Kabul edilen cevap doğrudan soruya yöneliktir. Ayrıca kabul edilen cevap 6 yıllık bir
Michael Delgado

3
Bu OP'ye yardımcı olmamış olabilir, ancak tam olarak aradığım buydu.
thislooksfun

1
Bu, web'de bunun için can atıyorsanız, başlık tarafından gönderilen soruyu yanıtlar.
Merlin

Başlığı cevapladığınız için teşekkürler ... bu yüzden buraya geldim.
grek40

Yardım etmesine sevindim.
mh sattarian

3

Kaplumbağa git kullanıyorsanız, bir dosyaya sağ tıklayıp bir farka gidebilirsiniz: İlk dosyaya sağ tıklayarak ve kaplumbağa alt menüsü üzerinden "Daha sonra dağıt" ı seçin Sonra ikinci dosyada buna da sağ tıklayabilirsiniz kaplumbağa bağı alt menüsüne gidin ve ardından "Dosyanız.txt ile Diff" seçeneğini seçin


-12

PhpStorm'u kullanarak, sadece önceki commit kodunu kopyalıyorum ve yerleşik "pano ile karşılaştır" aracını kullanarak mevcut sürümle karşılaştırıyorum.


5
PhpStorm ticari bir IDE'dir. Bu soru, bunun git cli içinde nasıl yapılacağı ile ilgilidir, ek yazılım varsayımı yoktur.
Charles Taylor
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.