git log --decorate
fügt der Protokollausgabe Informationen über verwandte Referenzen hinzu:
Diese Information hilft beim Verfolgen, welches Tag (oder Zweig) dieses Commit enthält. Beim Anzeigen einer eingeschränkten Gruppe von Dateien (z. B. eines Unterverzeichnisses) muss für diese Commits kein Tag angegeben werden. Gibt es eine Möglichkeit, eine Referenz auf eine Variable in der Protokollausgabe zu setzen?
Ich habe zuvor git describe
erwähnt, aber das ergibt v3.10-rc7-135-g98b6ed0
, was relativ zu einem Tag der Verzweigung ist, wo diese Änderung festgeschrieben wurde. Was ich suche, ist ein Tag-Name zwischen den Commits.
Aus Gründen der Übersichtlichkeit ist dies die aktuelle Situation:
%Vor%Was ich haben möchte, ist etwas wie:
%Vor% Die Ausgabe von git describe
anstelle des Commit-Hashes würde etwa wie folgt aussehen:
Wie Sie sehen können, werden ältere Tag-Namen als Referenzpunkt und nicht als der Punkt verwendet, an dem das Commit zusammengeführt wurde. Zu Illustrationszwecken verwende ich hier git log --oneline
, aber ich möchte tatsächlich eine vollständigere Ausgabe verwenden, z. git log -p --stat
.
Der --first-parent
-Parameter von git describe
(eingeführt mit Git 1.8.4) zeigt, wo ein Commit von abgeleitet ist. Um eine Beziehung zum ersten Tag nach dem Commit zu sehen, verwenden Sie git describe --contains
. Diese Option wird sehr langsam (~ 6 Sekunden), wenn Sie tiefer in die Geschichte eintauchen. Verfügbar seit git 1.5.3.
Der Befehl git name-rev
kann verwendet werden, um git rev-name
zu kommentieren und funktioniert
mit --graph
und --color
auch! Von seiner Manpage:
Finden Sie heraus, wo es relativ zu den lokalen Referenzen ist. Sag jemand hat dich über dieses fantastische Commit geschrieben 33db5f4d9027a10e477ccf054b2c1ab94f74c85a. Natürlich, Sie schauen in das Commit, aber das sagt nur, was passiert ist, aber nicht den Kontext.
Geben Sie
ein %Vor%git name-rev
:Jetzt sind Sie weiser, weil Sie wissen, dass es vor v0.99 940 Revisionen passiert ist.
Eine andere nette Sache, die Sie tun können, ist:
%Vor%
Dieser letzte Befehl hängt etwas an jeden SHA-1-Hash mit 40 Zeichen an, wie unten gezeigt (der markierte Teil wird um git name-rev
hinzugefügt).
Ein awk-Skript zur Nachbearbeitung von git log
output ist verfügbar unter Ссылка
(geschrieben bevor ich von git rev-name
wusste). Eigenschaften:
commit <hash>
anstelle von 40-Zeichen-Hashes (funktioniert auch mit --abbrev-commit
). git log --graph
format. git describe --contains
oder git describe --first-parent
output hinzu. Wie Sie sehen können, werden ältere Tag-Namen als Referenzpunkt und nicht als der Punkt verwendet, an dem das Commit zusammengeführt wurde.
Das sollte möglich sein ... bald (Git 1.8.4 Juli 2013):
Siehe committed e00dd1e9485c50f202cc97dfae19d510e108b565 :
%Vor%Betrachten Sie nur das erste übergeordnete Commit, wenn Sie den Commit-Verlauf durchlaufen.
Dies ist nützlich, wenn Sie nach einer Zusammenführung nur Tags in Ihrer Verzweigung suchen möchten.
OP Lekensteyn kommentiert es ( --first-parent
) ist nicht genug:
--first-parent
zeigt das Tag nicht an, an dem es zusammengeführt wurde.
Ich habe gerade entdeckt, dass--contains
dafür verwendet werden kann.
Siehe meine Antwort für eine noch bessere Lösung,git name-rev
.
Hinweis: git name-rev
stammt von git0.99.9 (Okt. 2005!) .
Tags und Links git