2013-11-09 10 views

Antwort

31

Führen Sie git blame für die Datei. Es zeigt Ihnen die Commit-ID, das Datum und die Uhrzeit und wer es festgelegt hat - für jede Zeile. Dann kopieren Sie einfach die Commit-Kennung und Sie können sie in git log <commit> oder git show <commit> verwenden.

Zum Beispiel habe ich eine Datei namens test.txt bekam, mit Linien auf verschiedenen Commits hinzugefügt:

$ cat test.txt 
First line. 
Second line. 

Ausführen des git blame:

$ git blame test.txt 
^410c3dd (Leigh 2013-11-09 12:00:00 1) First line. 
2365eb7d (Leigh 2013-11-09 12:00:10 2) Second line. 

Das erste Bit ist das Commit ID, dann Name, dann Datum, Uhrzeit, Zeitzone und schließlich Zeilennummer und Zeileninhalt.

+5

Das Problem ist, dass dies nur angezeigt wird, wenn die Dateien zuletzt geändert wurden und nicht wenn sie hinzugefügt wurden. – ensonic

+0

@ensonic Diese Antwort kann interessant sein, wenn das der Fall ist (zB die Zeile wurde verschoben, oder eine Leerzeichen-Änderung): http://stackoverflow.com/a/5816177/812680 – maartencls

+0

Nützlich ist zusätzlich, die Ergebnisse zu grep 'git blame test .txt | Grep 'Erste Linie'' –

25

Es gibt etwas schneller, als die ganze Datei zu beschuldigen. Wenn die Leitung ${lineno} und die Datei ist ${filename} können Sie:

git blame -L ${lineno},${lineno} ${filename} 

Beispiel:

git blame -L 2,2 test.txt 
6
git log -S searchTerm 

gibt Ihnen die Commits in denen der Suchbegriff eingeführt wurde.