"Git log -‌- foo" silinmiş foo dosyası için neden çalışmıyor?


89

Depomda aşağıdaki gibi değişiklikler yapıldı:

  1. ... ilgisiz bazı taahhütler ...
  2. foo100 satır içerikli yeni dosya kaydedin
  3. ... araya giren taahhütler, bazıları dokunuyor foo...
  4. İçeriğini yerleştirin foovarolan dosyanın üst kısmında barve git rm fooaynı taahhüt
  5. ... ilgisiz daha fazla işlem ...

Şimdi silinen dosyanın günlüğünü görmek istiyorum foo. SO da dahil olmak üzere okuduğum her şey yapabilmem gerektiğini söylüyor git log -- foo, ancak bu komut çıktı üretmiyor.

Silmeyi içeren yürütmeyi bulursam fooyapabilirim git log 1234abcd -- foove günlüğünü görebilirim, bu yüzden foosorunumun yolum olmadığını düşünüyorum . Ayrıca git merge-base HEAD 1234abcdçıktılara dikkat edin 1234abcd[...], bu yüzden bu commit'in ulaşılabilir olduğunu kanıtlaması gerektiğini düşünüyorum HEAD. fooÇalışma ağacımda dosya bulunmadığına dikkat edin (silindiği için bariz). OS X'te Git 1.7.1.1'i kullanma.

Neden git log -- foobenim için çalışmıyor ve bunu nasıl düzeltebilirim? Teşekkürler!


5
Denediniz mi git log --follow -- fooyoksa git log --follow -M -- foo? (yeniden adlandırmayı zorlamak için)
VonC

1
Lanet olsun, denedim - --followama historydenediğimde başka bir yerde cd'lendiğinden beri görüyorum ki yolu geçersiz kılıyor. git log --follow -- foodoğru başlangıç ​​noktasından denediğimde çalıştı. Sanırım Git , bir tür yeniden adlandırma olarak foogirmeyi düşündü bar? Her durumda, teşekkür ederim! Cevap olarak yeniden yayınlarsanız, bunu takdir etmekten memnuniyet duyarım.
user385804

1
Soru başlığında --değişmesi can sıkıcı ...
Cascabel

Yanıtlar:


118

Man sayfasında şu şekilde açıklanan --followseçeneği kullanmak istiyorsunuz git log:

Continue listing the history of a file beyond renames.

Etkili olarak, bu yalnızca yeniden adlandırılmış bir dosyanın geçmişini görmenize izin vermekle kalmaz, aynı zamanda artık çalışma ağacında olmayan bir dosyanın geçmişini de görüntülemenize olanak tanır. Bu nedenle, kullanmanız gereken komut şuna benzemelidir:

git log --follow -- foo

Güncelleme:

Git 2.9+ artık bunu tüm git diffve git logkomutlar için varsayılan olarak etkinleştirdi :

"Git diff" ve "git log" ailesindeki Porselen seviyesi komutlarıyla karşılaşan son kullanıcı, varsayılan olarak yeniden adlandırma algılamasını etkinleştirir; bunu devre dışı bırakmak için "diff.renames" yapılandırma değişkenini kullanmaya devam edebilirsiniz.

X-yuri'ye uyarılar için teşekkürler!


1
--followParça olmadan benim için çalıştı . Sadece eklemem gerekiyordu --. Koşuyorum git-2.9.0.
x-yuri
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.