Ich glaube nicht, dass dafür etwas eingebaut ist. Die Tatsache, dass sich eine einzelne Zeile selten mehrmals ändert, ohne dass sich auch der Rest der Datei wesentlich ändert, macht es schwierig, sodass sich die Zeilennummern häufig stark ändern.
Wenn Sie das Glück haben, dass die Zeile immer ein identifizierendes Merkmal aufweist, z. B. eine Zuordnung zu einer Variablen, deren Name sich nie geändert hat, können Sie die Regex-Option für verwenden git blame -L
. Zum Beispiel:
git blame -L '/variable_name *= */',+1
Dies findet aber nur den ersten Übereinstimmung für diesen regulären Ausdruck. Wenn Sie also keine gute Möglichkeit haben, die Linie abzugleichen, ist dies nicht allzu hilfreich.
Sie könnten etwas hacken, nehme ich an. Ich habe gerade keine Zeit, Code zu schreiben, aber ... etwas in diese Richtung. Ausführen git blame -n -L $n,$n $file
. Das erste Feld ist das zuvor berührte Commit, und das zweite Feld ist die Zeilennummer in diesem Commit, da es sich hätte ändern können. Nehmen Sie diese und führen Sie sie aus git blame -n $n,$n $commit^ $file
, dh ausgehend vom Commit vor dem letzten Ändern der Datei.
(Beachten Sie, dass dies fehlschlägt, wenn das letzte Commit, das die Zeile geändert hat, ein Zusammenführungs-Commit war. Dies kann in erster Linie passieren, wenn die Zeile im Rahmen einer Lösung für Zusammenführungskonflikte geändert wurde.)
Bearbeiten: Ich bin heute im März 2011 auf diesen Mailinglisten-Beitrag gestoßen, in dem dies erwähnt wird tig
und der git gui
über eine Funktion verfügt, die Ihnen dabei hilft. Es sieht so aus, als ob die Funktion für Git selbst in Betracht gezogen, aber noch nicht fertiggestellt wurde.