Wie kann ich den Namen von Zweigen in "git log" anzeigen?

216

Wie kann ich den Namen von Zweigen in der Ausgabe von git loganzeigen?

Zum Beispiel mit git log --graph --allbekomme ich einen schönen Überblick über die Commits , bin aber verwirrt, welche Zeile Master ist und welche zum Beispiel mein Zweig ist.

vdboor
quelle
1
Das Anzeigen der Namen verknüpfter Köpfe oder Tags scheint standardmäßig bereits seit einigen gitAktualisierungen zu erfolgen.
underscore_d

Antworten:

321

Probieren Sie die Dekorationsoption aus.

git log --graph --all --decorate

Es kommentiert Commits, auf die Tags oder Zweige verweisen.

CB Bailey
quelle
42
Mit können --prettySie verwenden, %dwo Sie die "Dekorationen" wollen.
CB Bailey
4
@noli: Was erwartest du davon? Nicht alle Commits sind Branchentipps.
CB Bailey
9
@noli git speichert den Filialnamen nur beim letzten Commit des Zweigs (dem Tipp). Alle Commits in der Geschichte sind gleich und anonym. Wenn Sie benannte Zweige möchten, damit jedes Commit den Zweignamen trägt, können Sie Mercurial verwenden.
Sampo Smolander
7
@ CharlesBailey: Ich mag die Farben der Schiedsrichter mit git log --graph --all --oneline --decorate. Ich habe einen Alias git graph, der verwendet --pretty(um auch andere Dinge wie Autor und Datum anzuzeigen), aber %des gibt mir nicht die Farben von --decorate. Ich verwende vorerst Gelb für alle meine Schiedsrichter. Weißt du, wie ich die Zeichenfolge von --pretty's %dString erben lassen kann --decorate?
Gauthier
3
@Gauthier Wenn Sie Standardfarben in Ihren --prettyFormaten haben möchten , fügen Sie %C(auto)vor dem Element hinzu, was gefärbt werden soll. zBgit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472
7

Ich suchte nach etwas Ähnlichem - wollte aber wissen, in welchem ​​Zweig eine Änderung vorgenommen wurde. Hoffentlich wird diese Antwort auch anderen von Nutzen sein.

Ich untersuche ein Risiko mit blackboxVerschlüsselung, bei dem ein Repo und seine Zweige / Tags für den aktuellen Stand möglicherweise nicht mehr verfügbar sind, adminswenn genügend Benutzer ein Projekt verlassen und das keyringsVerzeichnis nicht religiös auf dem Master basiert.

Ich fand, dass die Antwort unten hilfreich war, wenn das keyringsVerzeichnis nicht vom Master aktualisiert wurde ...

Grundsätzlich --sourcewar das Hinzufügen das, was ich brauchte, um die Zweige / Tags anzuzeigen. Durch Hinzufügen --name-onlywird auch angezeigt, welche Datei tatsächlich geändert wurde.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Eine weitere nützliche Antwort: So zeigen Sie das Git-Protokoll mit dem Filialnamen an

Android-Steuerung
quelle
Für mich gibt --sourceallein HEADfür alle Commits. In Kombination mit --allscheint dies zwischen verschiedenen Zweigen zu unterscheiden, aber die angezeigten Informationen entsprechen nicht meinen Erwartungen: Für Commits, die ich durchgeführt habe , erhalte ich einen privaten Zweig ( ) master, anstatt ihn zu refs/heads/mastererhalten refs/remotes/origin/…. Ich vermute, dass Zusammenführungen und / oder neue Zweige dazu führen Git, dass Verlaufsinformationen verloren gehen.
vinc17
Stattdessen --allkann ich nach den Zweigen mit filtern --branches --remotes=<pattern>, aber sobald zwei Zweige zusammengeführt werden, verfügt Git nicht mehr über die Informationen, für die der Commit zum Zeitpunkt des Commits ausgeführt wurde.
vinc17
1

Wenn Sie oh-my-zsh als Terminal verwenden, stehen eine Reihe von Git-Aliasen zur Verfügung. All dies ist auf ihrem Repo oh-my-zsh / plugins / git zu sehen . Wenn Sie dieses Terminal nicht verwenden, können Sie einfach die Aliase abrufen und die gewünschten in Ihre eigene Umgebung einfügen.

Die akzeptierte Antwort enthält den git log --graph --all --decorateBefehl, der als glggaAlias ​​in oh-my-zsh verfügbar ist .

Persönlich bevorzuge ich den glodsAlias, der übersetzt bedeutet:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
Simon
quelle