2013-08-08 15 views
20

git-diff manuel sayfalar indeksi ve bir ağacın, iki ağaç veya değişiklikler arasında değişiklikler arasında değiştirir, diff çalışma ağacı ve endeks veya bir ağacın arasınaGit işlemi ile çalışma dizini arasındaki fark nedir?

göster değişikliklere kullanıldığını söylüyor Diskteki iki dosya arasında .

Peki, KAFA ve çalışma dizini öncesinde yapılan bir işlem arasındaki farkı göstermek istersiniz? Mümkün mü?

cevap

27

Evet, ancak “geçerli proje durumu” nun ne olduğu ile ilgili tanımınıza biraz bağlı. Git diff için kullanım kılavuzu devam ediyor.

git diff [--options] --cached [<commit>] [--] [<path>...] 

Bu form adlı <commit> göre taahhüt sonraki için sahnelenen değişiklikleri görüntülemek için:

Eğer ile karşılaştırarak ilgileniyorsanız

değişiklikleri düzenledi. Tipik olarak, en son işlemle karşılaştırmak isteyebilirsiniz, bu yüzden <commit> vermezseniz, varsayılan olarak HEAD olarak ayarlanır. HEAD mevcut değilse (örneğin, doğmamış dallar) ve <commit> verilmezse, tüm aşamalı değişiklikleri gösterir. --staged, --cached eşanlamlısıdır. Eğer unstaged değişikliklerle karşılaştırarak ilgileniyorsanız

:

git diff [--options] <commit> [--] [<path>...] 

Bu form adlı <commit> için çalışma ağaç göreli sahip değişiklikleri görüntülemek etmektir. En son işlemle karşılaştırmak için HEAD veya farklı bir dalın ucuyla karşılaştırmak için bir şube adı kullanabilirsiniz.

Yoksa herhangi iki kaydedilmesini karşılaştıran sadece ilgilenen varsa (biri olabilir BAŞLIK):

git diff [--options] <commit> <commit> [--] [<path>...] 

Bu iki keyfi <commit> s arasında değişiklikleri görüntülemek etmektir.

Yani someOldCommit ve mevcut BAŞ arasındaki farkları görmek için git diff someOldCommit HEAD çalıştırmak isteyebilirsiniz.

+1

"Geçerli proje durumu" ile çalışma dizinini kastediyordum, bunun biraz dağınık olduğunu biliyorum. Sorumu güncelledim. – HelloGoodbye

+2

Cevabınız için teşekkürler. Yani, git farkı [--options] [-] [ ...] 'o zaman aradığım şeydi. Benim durumumda, herhangi bir seçenek kullanmam gerekmediğinden ve sadece mevcut yol içinde farklar almam gerektiğinden, bu benim için 'git diff .' – HelloGoodbye

+1

'a indirgiyor ya da depo ve üst düzey dizinde olması garanti edilmez, git git 'ye ihtiyacım var. Bir komut dosyasından bu, "" $ (git rev-parse --show-toplevel) "' olmalıdır. – HelloGoodbye

İlgili konular