"Git diff" hiçbir şey yapmaz


97

Bunun bir yerlerde bir yapılandırma hatası olduğunu varsayıyorum, ancak nerede olduğunu bulamıyorum. Normal git komutları iyi çalışıyor gibi görünüyor, ancak "git diff" hiçbir şey yapmıyor. Güvende olmak için, harici diff araçlarını .gitconfig dosyamdan kaldırdım. Bu, MacPorts aracılığıyla kurulmuştur ve en son sürümdür (1.7.2.2).

Çalışma alanımdan "git diff" çalıştırdığımda, hiçbir şey yapmadan çıktığını görüyorum.

$ git --version
git version 1.7.2.2
$ git diff
$ 

Kök çalışma alanımdan bir dizini yedeklersem, "git diff" yazmak bana şunu verir:

$ git diff
usage: git diff [--no-index] <path> <path>

Git deposu altında olmadığım için bu beklenen bir davranış olabilir.

Bunu gidermek için ne yapabileceğime dair bir fikriniz var mı?


Sorunu giderecek bir şey olduğunu düşündüren nedir? Ne görmeyi bekliyordun?
Rob Kennedy

Not: Depo git diff dışında kullanıldığında oluşan hata mesajı yakında daha net hale gelecektir. Aşağıdaki cevabımı
VonC

1
İki kaydetme arasında belirli bir dosyayı ayırmaya çalışıyorsanız ve hiçbir çıktı görmüyorsanız, dosya yolunda büyük / küçük harflerin doğru olduğundan emin olun.
Seth Çiçek

Yanıtlar:


113

İçin varsayılan çıktı git diff, dizine eklenmemiş / eklenmemiş değişikliklerin listesidir. Değişiklik yoksa çıktı da yoktur.

git fark [- seçenekler] [-] […]

Bu form, dizine göre yaptığınız değişiklikleri görüntülemektir (sonraki işlem için hazırlık alanı). Başka bir deyişle, farklılıklar nelerdir olabilir endeksine ilave eklenti için git söyle ama hala yok.

Daha fazla ayrıntı için belgelere bakın. Özellikle, örneklere ilerleyin ve bu bölümü okuyun:

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  1. Çalışan kopyayı indeksle farklılaştırın
  2. Dizini HEAD ile farklılaştırın
  3. Çalışan kopyayı HEAD ile ayırın

Çalışma alanınızın dışında, tahmin ettiğiniz gibi git neyin farklı olacağını bilemez, bu nedenle karşılaştırmak için açıkça iki yol, dolayısıyla kullanım mesajı belirtmeniz gerekir.


13
Cevabınızın doğru olduğundan emin değilim, ama cevabı bulmama yardımcı oldu, bu yüzden teşekkür ederim, ben de öyle işaretleyeceğim! Git diff için varsayılan çıkışı olmayan kararsız değişikliklerin listesi, bu olan kararsız değişikliklerin listesidir da "henüz sonraki taahhüt için sahnelenen". Yani, "git diff" in yapmasını beklediğim şeyi yapan komut aslında "git diff HEAD" dir.
Tom Lianza

2
Resmi tamamlamak için git diff --cached kullanarak dizinde ne olduğunu gösterin.
Douglas

git diff: (dizin) - (çalışma dizini) mi yoksa tam tersi: (çalışma dizini) - (dizin) mi?
BKSpurgeon

4

Not: Git 1.8.5 veya 1.9, Q4 2013'ten itibaren :

Kullanıcı çalışan bir ağacın içinde " git diff" olduğunu düşünerek çalışma ağacının dışına " " yazdığında, tek satırlık mevcut hata mesajı:

usage: git diff --no-index <path> <path>

Hatayı fark etmesi için yeterli olmayabilir.

Açık bir komut satırı seçeneği olmadan Not a git repository" --no-index" moduna düştüğümüzde hata mesajına " " ekleyin .


Görmek:

" diff --no-index" İçin belgeleri netleştirin .
Bir arşivin içinde olmadığında --no-index, ima edildiğini ve iki argümanın zorunlu olduğunu belirtin .

diff-no-indexKullanıcıyı CWD'nin bir havuzun içinde olmadığını ve bu nedenle iki bağımsız değişkenin zorunlu olduğunu bildirmek için gelen hata mesajını netleştirin .

To compare two paths outside a working tree:
usage: git diff --no-index <path> <path>

2

Çalışma dizininiz temizse ve son güncellemeden hiçbir fark yoksa hiçbir şey yapmaz. Bir dosyayı düzenlemeyi deneyin ve daha sonra git diff'i tekrar çalıştırın ve ardından fark göstermelidir.


1

Eğer onu gerçek bir havuzun ya da çalışma kopyasının dışında kullanıyorsanız, davranışı GNU farkıyla aynıdır. Bu yüzden karşılaştırılacak 2 dizin veya dosyayı bilgilendirmeniz gerekiyor. Misal:

git diff old_dir new_dir.

Aralarında herhangi bir fark varsa, çıktı beklendiği gibi size gösterecektir.


0

Sizin durumunuzda değil, belki de ilettiğiniz dosya mevcut olmadığı içindir.

$ git difftool HEAD HEAD^ -- path/that-not-exists

hiç birşey olmadı

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.