git grep --cached foo
nasıl çalışır? git grep foo
gibi git sürüm 1.6.4.4 veya 1.6.5.2, git grep --cached foo
döner tamamen aynı şeyi Running. git grep --cached
git diff --cached
gibi çalışmak düşündüm. Yani
man page beni inandıramaz kesinlikle ne var:
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 etmektir. Tipik olarak en son işlemle karşılaştırmak isteyebilirsiniz, bu yüzden<commit>
vermezseniz, varsayılan olarakHEAD
.HEAD
ana kadar (örneğin doğmamış dallar) ve<commit>
verilmez etmez, bu tüm değişiklikleri aşamalı gösterir.--staged
,--cached
eşanlamlısıdır.
Bu bir hata mıdır, yoksa söz konusu işlenmeye ilişkin değişiklikleri bulmanın alternatif/daha iyi bir yolu var mı?
git diff --cached | grep foo
yukarıdaki komut Bana istediğim şeyi yarısını verir, ancak değişikliğin görünür dosyanın hangisi bağlamını kaybeder.
GÜNCELLEME
Öyle bir kavram hatası için var görünür ne --cached
bakıyor. Ağaçlandırma alanının uygulandığı varsayılarak ağacın durumunu araştırıyor gibi görünüyor. Bu mantıklı, şimdi bunun hakkında düşünüyorum. Ne aramak istediğiniz fark değil tam ağaçtır.
Özellikle, ben içine SpecialLog(...)
işlemek üzereyim (I telefonların veya bağlam umurumda değil) tüm dosyaların listesini bilmek istiyorum, bu yüzden bu dosyaları düzenlemek gidip SpecialLog
kaldırabilirsiniz. Evet, git diff --cached
'u yapabilirim ve SpecialLog
için çağrı cihazında arama yapabilirim, ancak daha sonra tek bir dosyadaki büyük değişiklikler için çok sayıda kopya var ve baktığım dosya belli değil. Zaman geçer
Teşekkür:
aşağıdaki örnekte olduğu gibi özel bir dize söz değişikliklerle dosyalar için dizinde arama yapın. Kavram hatamı anlamama yardımcı oldunuz (açıklamasında güncellemeye bakın). Yani gerçekten aradığım şey git diff ve grep'i birleştiren bir şey. Çağrı cihazı çalışıyor, ama aradığım şey değil;) –Güncellenmiş yanıta bakın. –
Sweet! Tam olarak istediğim bu! –