İşlenecek birkaç değişiklik yaptım; Bir sonraki işlem için sahnelenen tüm dosyaların dağılımını nasıl görebilirim? farkındayım git durumuama asıl farkları görmek isterim - sadece sahnelenen dosyaların isimlerini değil.
Onu gördüm Git-diff (1) adam sayfa diyor
git diff [--options] [-] […]
Bu form, dizine göre yaptığınız değişiklikleri (sonraki işlem için hazırlama alanı) görüntülemektir. Diğer bir deyişle, farklılıklar senin could dizine ekleyebilmek için git'e söyle, ama hala yapmadın. Bu değişiklikleri git-add (1) kullanarak gerçekleştirebilirsiniz.
Ne yazık ki, bu konuda bir şey ifade edemiyorum. Bir takma ad oluşturabileceğim kullanışlı bir tane olmalı, değil mi?
Sadece olmalı:
git diff --cached
--cached
önbellek / dizindeki değişiklikleri (yani aşamalı değişiklikler) geçerli değere göre gösterir HEAD
. --staged
bir eşanlamlı --cached
.
--staged
ve --cached
işaret etmiyor HEAD
, sadece saygı ile fark HEAD
. Kiralamak için ne kullanacağınızı git add --patch
(veya git add -p
), --staged
sahnelenen şeyi geri döndürecektir.
Basit bir grafik bunu daha net hale getirir:

git diff
Çalışma dizini ile dizin arasındaki değişiklikleri gösterir. Bu, neyin değiştiğini gösterir, ancak bir taahhüt için sahnelenmez.
git diff --cached
Dizin ile HEAD arasındaki değişiklikleri gösterir (bu daldaki son işlem). Bu, endekse nelerin eklendiğini gösterir ve bir taahhüt için düzenlenir.
git diff HEAD
Çalışma dizini ile HEAD (dizindeki değişiklikleri içeren) arasındaki tüm değişiklikleri gösterir. Bu, taahhütte bulunulup oluşturulmadıklarına bakılmaksızın, son taahhütten sonraki tüm değişiklikleri gösterir.
Ayrıca:
Biraz daha fazla detay var 365Git.
Görsel yan yana görüşle ilgilenecekseniz, dağınık Görsel fark aracı bunu yapabilir. Bazı değişiklikler değil, tüm değişiklikler yapıldığında bile üç bölme gösterecektir. Çakışma durumunda, dört bölme bile olacak.

İle çağırmak
diffuse -m
Git çalışma kopyanızda.
Bana sorarsanız, on yıl boyunca gördüğüm en iyi görsel farklılık. Ayrıca, Git'e özgü değil: SVN, Mercurial, Bazaar, dahil olmak üzere diğer VCS bolluğu ile birlikte çalışır ...
Ayrıca bakınız: Git değişikliğinde hem aşamalı hem de çalışan ağacı göster
Bunu not et git status -v
Ayrıca aşamalı değişiklikleri gösterir!
(sahnelenmesi gereken anlamı - git add
-- bazı değişiklikler. Aşamalı değişiklik yok, fark yok git status -v
.
O zamandan beri Git 1.2.0, Şubat 2006)
Uzun biçiminde (varsayılan), git status
HEAD ve indeks arasındaki farkı gerçekten gösteren belgesiz bir "verbose" seçeneğine sahiptir.
Ve daha da eksiksiz hale gelmek üzere: bkz. "Git değişikliğinde hem aşamalı hem de çalışan ağacı göster"(git 2.3.4+, Q2 2015):
git status -v -v
Bu komutu kullanabilirsiniz.
git diff --cached --name-only
--cached
seçeneği git diff
sahnelenen dosyaları almak ve --name-only
seçenek sadece dosyaların isimlerini almak demektir.
1.7 ve üstü sürümlerden şöyle olmalı:
git diff --staged
GÖRSEL DİFÜZ ALETİ KULLANIMI
Varsayılan Cevap (komut satırında)
Buradaki en iyi yanıtlar, önbelleğe alınmış / aşamalı değişikliklerin nasıl görüntüleneceğini doğru bir şekilde gösterir. Index
:
$ git diff --cached
veya $ git diff --staged
bu bir takma addır.
Görsel Diff Aracı'nı Yerine Getirmek
Varsayılan cevap git bash'taki (yani komut satırında veya konsoldaki) fark değişikliklerini dışarı çıkaracaktır. Aşamalı dosya farklılıklarının görsel bir temsilini tercih edenler için, her bir dosya için komut satırında gösterilmekten ziyade görüntülenen her bir dosya için bir görsel fark aracını başlatan bir komut dosyası bulunmaktadır. difftool
:
$ git difftool --staged
Bu aynısını şöyle yapacak git diff --staged
fark aracının çalıştırıldığı herhangi bir zaman haricinde (yani, her dosya bir dosya tarafından işlendiğinde), varsayılan görsel farklılık aracını (çevremde) başlatacaktır. KDiff3).
Araç başlatıldıktan sonra, görsel fark aracınız kapanana kadar git diff betiği duracaktır. Bu nedenle, sonraki dosyayı görmek için her dosyayı kapatmanız gerekecektir.
Herzaman Kullanabilirsiniz difftool
yerine diff
git komutlarında
Tüm görsel farklı ihtiyaçlarınız için git difftool
herhangi bir yerine çalışır git diff
tüm seçenekler dahil olmak üzere komut.
Örneğin, görsel fark aracının her dosya için yapıp yapmamasını sormadan başlatması için -y
seçenek (genellikle bunu isteyeceğinizi düşünüyorum!):
$ git difftool -y --staged
Bu durumda, görsel dif aracındaki her bir dosya birer birer birer yukarı çekilerek, araç kapatıldıktan sonra bir sonraki noktaya getirilir.
Ya da sahnelenen belirli bir dosyanın farklılığına bakmak için Index
:
$ git difftool -y --staged <<relative path/filename>>
Tüm seçenekler için, man sayfasına bakın:
$ git difftool --help
Görsel Git Aracını Ayarlama
Varsayılan dışında bir görsel git aracını kullanmak için -t <tool>
seçeneği:
$ git difftool -t <tool> <<other args>>
Veya, farklı bir varsayılan görsel fark aracını kullanmak için git'i nasıl yapılandırılacağına ilişkin difftool man sayfasına bakın.