git - Dosyanın eklendiği yeri bul


208

Diyelim ki bir foo.jssüre önce işlenmiş bir dosyam var . Ben sadece bu dosyanın ilk eklendiğinde taahhüt bulmak istiyorum.

Cevapları ve kendi müdahalemi okuduktan sonra, bu benim için çalışıyor

git log --follow --diff-filter=A --find-renames=40% foo.js

Yanıtlar:


317

İşte daha basit, "saf Git" yolu, herhangi bir boru hattı gerekmeden:

git log --diff-filter=A -- foo.js

Dokümanları kontrol edin. Aynı şeyi Silinmiş, Değiştirilmiş vb. İçin de yapabilirsiniz.

https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203

Bunun için kullanışlı bir takma adım var, çünkü her zaman unutuyorum:

git config --global alias.whatadded 'log --diff-filter=A'

Bu onu şu kadar basit hale getirir:

git whatadded -- foo.js

Aşağıdaki bir astar , dosyaya mutlak veya göreceli yol sağlamak zorunda kalmadan $PWDfor foo.jsdosyasının alt dizinlerinde özyinelemeli olarak arama yapmaz ve dosyanın aynı dizinde olması gerekmez.$PWD

git log --diff-filter=A -- **foo.js

27
1! Ancak, dosyam bir alt klasördeydi, bu yüzden sadece ön tarafa bir yıldız ekledikten sonra çalıştımgit log --diff-filter=A -- *subfolder/foo.js
Geo

4
Bu, diğer dallardan birleştirilen ancak birleştirmeyi yapan kullanıcı tarafından birleştirilen dala eklenmemiş olan dosyalar üzerinde nasıl çalışır?
g33kz0r

Yukarıdaki doc bağlantısı bayrak bilgisine atlamaz. Belki yayınlandığından beri değişti. git-scm.com/docs/git-log#Documentation/…
webbower

1
Evet, dokümanlardaki çapa yapısını değiştirdiler. Güncellendi, teşekkürler!
stelterd

@geo i gerçekten söyleyerek değil şeyi almak düşünüyorum, ama ben genelde oradan bir git dizini ve konu komutları proje kökü dahilinde kalmak benzer kullanım örneği var ve verilen bir astar kullanarak git log --diff-filter=A -- foo.jsyazdırmak vermedi benim terminalde STDOUT ID / karma taahhüt yerine ben istenen sonuçları elde etmek için git repo kök dosya göreceli yol sağlamak zorunda kaldı
ipatch


1

Aşağıdakiler ilginizi çekmeyebilir, ancak gelecekte size yardımcı olacağını ve Git'teki hata ayıklama ekosisteminin bir parçası olduğunu düşünüyorum:

git-blameBir dosyanın her satırını, özellikle de dosya ek açıklamasını en son hangi düzeltme ve yazarın değiştirdiğini göstermek için kullanabilirsiniz . Https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git adresini ziyaret edin.

Örneğin,

git blame -L 174,190  xx.py

Lütfen her bir işlenenin ne yaptığını açıklar mısınız? İlgili rtfm'ye bir bağlantı sağladığınızı anlıyorum, ancak küçük bir açıklama, postanızı tek elden bir mağaza haline getirecektir.
rossmcm

Pro-Git kitabının dediği gibi, kodunuzdaki bir hatayı izlerseniz ve ne zaman tanıtıldığını ve nedenini bilmek istiyorsanız, dosya ek açıklamaları genellikle en iyi araçtır. Herhangi bir dosyanın her satırında en son hangi değişiklik olduğunu gösterir, bu yüzden gösterdiğim bu örnek çıktıyı 174 ile 190 arasındaki satırlarla sınırlamak için -L seçeneğini kullanır ve son şey sadece kontrol etmek istediğiniz hedef dosyadır ( xx.py) bu durumda bir python dosyası @rossmcm
Reidel
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.