2012-12-03 38 views
31

GIT'in belirli bir dosyada belirli bir kod satırını hangi taahhütte bulduğunu bulmak mümkün mü? Bu, bu satır eklendiğinden beri pek çok taahhüt olduğu varsayılmaktadır. Ya da bu satırın mevcut olduğu dosya için tüm taahhütlerin git suçuna bakarken bir senaryoda yapılması gereken bir şey mi?Git taahhüt edilen hat suçu

Orijinal Dosya- netleştirmek için> Satır Eklendi dosya ve taahhüt etmek -> Diğer birçok onaylatabilirsiniz sonra diğer satırları ekleyerek ve eklendiğini belirtmek beri çizgi değişmediğini varsayarsak kodu

cevap

29

sen de --reverse kullanabilirsiniz sha1 numarası almak için git blame -l filename kullanabilirsiniz:

--reverse

Yürüme geçmişini ileri değil, geriye ait. Bir satırın göründüğü revizyonu göstermek yerine, bu, bir çizginin var olduğu son revizyonu gösterir. Bu, START..END gibi bir dizi düzeltmeyi gerektirir.

http://www.kernel.org/pub/software/scm/git/docs/git-blame.html

+0

Bu beni doğru yönde çekiyor. L'nin satır veya satır aralığının izlenmesine izin veren git suçlaması için bir argüman olduğu görülüyor. Biraz daha araştırıp bulgularımı yayınlayacağım. –

+0

benim düzenleme görmek için tersi ve -L kullanabilirsiniz menzil için o zaman – phschoen

+0

işlemini kullanın. Eğer kullansaydım - eminim ki o da yardımcı olur. Teşekkürler. –

2

değişen Basitçe:

git blame <that file> ve sonra peşinde olduğunuz çizgiyi arayın.

eklendiğini belirtmek beri çizgi değiştirildiyse

, yine git blame son satır değiştirilmiş hangi taahhüt öğrenmek ve daha sonra git checkout <sha>~1 (burada sha orijinal git blame renkte görünür sha olan) ve Bu satırın geçmişine geri dönmek için git blame tekrar. Satır

değiştirildi zaman

+0

Yukarıda açıklama ekledim. Birçok taahhüt yapıldıktan sonra onu bulmak istiyorum. Aksi halde dediğin gibi sadece suçu yaparım. –

+0

Bu, özellikle çizgiyi tanıtan işlemin bana vereceği gibi görünmüyor. Daha ziyade, kendimi bulmaya devam etmek için git suçlamasını kullanmalıyım. GIT'in bunu benim için bulabileceğini umuyordum. –

+0

Bu dosyayı sürekli olarak "git blame" e çevirmekten başka bir yol bilmiyorum ve hattı elle bulun. Git'in otomatik olarak yapmanın bir yolu olduğunu sanmıyorum. –

0

bkz Size dosyasını kontrol etmek git günlüğü -L kullanabilirsiniz görünüyor. Mesela ben 55 ila 60 file.c, çizgi için kaydedilmesini kontrol etmek istiyorum:

git log -L55,60:file.c 
2

Böyle özel kod dizesi karşı suçlayamaz.

git log -S 'THE-CODE' 
İlgili konular