Ist es möglich zu sehen, wer eine bestimmte Zeile vor dem Commit bearbeitet hat git blame
, wie von einem Commit-Verlauf für eine bestimmte Zeile?
Zum Beispiel führe ich Folgendes aus (für das hervorragende uncrustify
Projekt):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
Wie kann ich herausfinden, wer diese Zeile vor dem Festschreiben bearbeitet hat fe25b6d
? Und wer hat es vor diesem Commit bearbeitet ?
-w
Option. Es gibt auch-M
für verschobenen / kopierten CodeAntworten:
Sie können eine Revision angeben, bei der Git-Schuld zurückblicken soll (anstelle der Standardeinstellung von
HEAD
).fe25b6d^
ist der Elternteil vonfe25b6d
.quelle
--
wird häufig als Trennzeichen in Befehlszeilenargumenten verwendet. Im Fall von Git wird es normalerweise verwendet, um Dinge wie Commit-Hashes von einer Liste von Dateinamen zu trennen.Mit git log -L können Sie die Entwicklung eines Zeilenbereichs anzeigen.
Beispielsweise :
bedeutet "Verfolgen Sie die Entwicklung der Zeilen 15 bis 23 in der Datei mit dem Namen filename.txt".
quelle
Bernsteins Antwort ist richtig, aber ich fand sie unklar; Die Syntax lautet:
Hinweis: Mit
--
wird das baumartige sha1 von den relativen Dateipfaden getrennt. 1Zum Beispiel:
Volle Anerkennung an Amber für das Wissen über alle Dinge! :) :)
quelle
Vielleicht möchten Sie Folgendes überprüfen:
Bietet Ihnen eine schöne grafische Darstellung von Änderungen wie "Git-Schuld", aber mit anklickbaren Links pro Zeile, um zu früheren Commits überzugehen. Bewegen Sie den Mauszeiger über die Links, um ein Popup mit Festschreibungsdetails zu erhalten. Nicht meine Credits ... habe es hier gefunden:
http://zsoltfabok.com/blog/2012/02/git-blame-line-history/
git gui
ist eine grafische Tcl / Tc-Schnittstelle zu Git. Ohne weitere Parameter wird eine ziemlich einfache, aber nützliche grafische App zum Festschreiben von Dateien, Hunks oder sogar einzelnen Zeilen und ähnlichen Befehlen wie Ändern, Zurücksetzen, Drücken ... gestartet. Sie ist Teil der Git Stock Suite. Unter Windows ist es im Installationsprogramm enthalten. Auf debian - ich weiß nichts über andere * nix-Systeme - muss es separat installiert werden:Aus den Dokumenten:
https://git-scm.com/docs/git-gui
quelle
this
: Aber wie sehe ich die vorherige Version der Zeile und wann wurde sie hinzugefügt?Aufbauend auf der vorherigen Antwort sollte dieser Bash-Einzeiler Ihnen das geben, wonach Sie suchen. Es zeigt den Git-Schuldverlauf für eine bestimmte Zeile einer bestimmten Datei in den letzten 5 Revisionen an:
In der Ausgabe dieses Befehls wird möglicherweise der Inhalt der Zeilenänderung oder die angezeigte Zeilennummer für ein bestimmtes Commit geändert.
Dies weist häufig darauf hin, dass die Zeile nach diesem bestimmten Commit zum ersten Mal hinzugefügt wurde. Es könnte auch anzeigen, dass die Zeile aus einem anderen Teil der Datei verschoben wurde.
quelle
Es gibt auch
recursive-blame
. Es kann mit installiert werdenquelle
Eine sehr einzigartige Lösung für dieses Problem ist die Verwendung von Git Log:
Wie von Andre hier erklärt
quelle
git config --global alias.changes 'log -p -M --follow --stat --'
und dann kann ich einfachgit changes path/to/your/file
Wenn Sie JetBrains Idea IDE (und Derivate) verwenden, können Sie mehrere Zeilen auswählen, mit der rechten Maustaste auf das Kontextmenü klicken und dann Git -> Verlauf zur Auswahl anzeigen. Sie sehen eine Liste der Commits, die sich auf die ausgewählten Zeilen ausgewirkt haben:
quelle
Ab Git 2.23 können Sie Git Blame --ignore-rev verwenden
Für das in der Frage gegebene Beispiel wäre dies:
(Es ist jedoch eine Trickfrage, da fe25b6d die erste Revision der Datei ist!)
quelle
Aufbauend auf der Antwort von Will Shepard enthält seine Ausgabe doppelte Zeilen für Commits, bei denen keine Änderung vorgenommen wurde. Sie können diese also wie folgt filtern (mithilfe dieser Antwort ).
Beachten Sie, dass ich das REVS-Argument entfernt habe und dies auf das Root-Commit zurückgeht. Dies ist auf die obige Beobachtung von Max Nanasy zurückzuführen.
quelle
Aufbauend auf der Antwort von DavidN möchte ich der umbenannten Datei folgen:
ref: Den Verlauf des Umbenennens von Dateien im Git-Protokoll gut anzeigen
quelle
Ich benutze dieses kleine Bash-Skript, um einen Schuldverlauf zu betrachten.
Erster Parameter: zu betrachtende Datei
Nachfolgende Parameter: An git schuld übergeben
Sie können Schuldparameter wie -L 70, + 10 angeben, aber es ist besser, die Regex-Suche nach Git-Schuld zu verwenden, da sich Zeilennummern normalerweise im Laufe der Zeit "ändern".
quelle
Aufbauend auf der Antwort von stangls habe ich dieses Skript als git-bh in meinen PATH (auch unter Windows) eingefügt:
Dadurch kann ich nach allen Commits suchen, bei denen es um ein Wort ging:
Skript:
quelle