Visualisierung der Branchentopologie in Git

883

Ich spiele isoliert mit Git auf meinem eigenen Computer und finde es schwierig, ein mentales Modell aller meiner Zweige und Commits zu pflegen. Ich weiß, dass ich git logden Commit-Verlauf von meinem Standort aus anzeigen kann. Gibt es jedoch eine Möglichkeit, die gesamte Branchentopographie anzuzeigen, etwa diese ASCII-Karten, die anscheinend überall zur Erklärung von Zweigen verwendet werden?

      .-A---M---N---O---P
     /     /   /   /   /
    I     B   C   D   E
     \   /   /   /   /
      `-------------'

Es fühlt sich einfach so an, als würde jemand, der mitkommt und versucht, mein Repository abzuholen, Schwierigkeiten haben, genau herauszufinden, was los war.

Ich glaube, ich bin vom Stream-Browser von AccuRev beeinflusst ...

Benjol
quelle
Duplikat von stackoverflow.com/questions/1064361/…
Leif Gruenwoldt
1
@ leif81, ein halbes Duplikat, für mich. @Masi hat gitk in seiner Frage ausdrücklich ausgeschlossen.
Benjol

Antworten:

1082

Verwenden Sie git log --graphoder gitk. (Beide akzeptieren auch --all, wodurch alle Zweige anstelle nur des aktuellen angezeigt werden.)

Versuchen Sie für Zweigstellennamen und eine kompakte Ansicht:

git log --graph --decorate --oneline
Jrockway
quelle
47
Dies kennzeichnet nicht einmal die Commits mit den Zweigen. Ich würde das nicht so nennen, wie es ist.
Roman Starkov
7
Vielen Dank! gitg hat auch die --allOption und beschriftet auch die Commits. Ich habe auch nie in der Dropdown-Liste gesehen, dass Sie dort alle Zweige auswählen können.
Thomas
210
Ich würde empfehlen git log --graph --decorate --oneline- zeigt ein Commit pro Zeile und verziert mit Zweignamen.
Sleske
8
tig (ein ncurse git client) bietet ebenfalls die --allOption. Sehr praktisch!
Pierre-Adrien Buisson
5
Siehe auch Antwort von Andrew bezüglich der --simplify-by-decorationOption.
Ruvim
483

Ich benutze normalerweise

git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"

Mit Farben (wenn Ihre Shell Bash ist):

git log --graph --full-history --all --color \
        --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

Dadurch wird eine textbasierte Darstellung wie folgt gedruckt:

* 040cc7c       (HEAD, master) Manual is NOT built by default
* a29ceb7       Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd     (cvc3) cvc3 now configured before building
| * d9e8b5e     More sane Yices SMT solver caller
| | * 5b98a10   (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874     CFLAGS for cvc3 to work successfully
| *   1579581   Merge branch 'llvm-inv' into cvc3
| |\
| | * a9a246b   nostaticalias option
| | * 73b91cc   Comment about aliases.
| | * 001b20a   Prints number of iteration and node.
| |/
|/|
| * 39d2638     Included header files to cvc3 sources
| * 266023b     Added cvc3 to blast infrastructure.
| * ac9eb10     Initial sources of cvc3-1.5
|/
* d642f88       Option -aliasstat, by default stats are suppressed

(Sie könnten nur verwenden git log --format=oneline, aber es wird Commit-Nachrichten an Zahlen binden, was meiner Meinung nach weniger hübsch aussieht).

Um eine Verknüpfung für diesen Befehl zu ~/.gitconfigerstellen , möchten Sie möglicherweise Ihre Datei bearbeiten :

[alias]
  gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"

Wie Sodel the Vociferous jedoch in den Kommentaren festhält, ist ein derart langer Formatierungsbefehl schwer zu merken. Normalerweise ist dies kein Problem, da Sie es möglicherweise in die ~/.gitconfigDatei einfügen. Wenn Sie sich jedoch manchmal bei einem Remotecomputer anmelden müssen, auf dem Sie die Konfigurationsdatei nicht ändern können, können Sie eine einfachere, aber schneller einzugebende Version verwenden:

git log --graph --oneline
P Shved
quelle
10
Wenn Sie Daten mögen: git log --graph --full-history --all --color --date = short --pretty = format: "% x1b [31m% h% x09% x1b [32m% d% x1b [ 0m% x20% ad% s "
sehugg
7
--oneline ist ein denkwürdiger Ersatz für all diese hübsche Formatierungs-Tiefenmagie.
Daniel Ralston
1
@SodeltheVociferous, in der Tat habe ich das Problem nicht von der Seite aus angegangen, über die Sie sprechen. Ich habe meine Antwort erweitert.
P Shved
2
Hinweis: --full-historyist nur relevant, wenn --simplify-by-decorationein Dateipfad verwendet oder angegeben wird.
Slipp D. Thompson
2
Darf ich fragen, woher Sie die Formatzeichenfolge haben? Oder wie um alles in der Welt hast du das Ding erfunden?
Elliotwesoff
444

Ich habe 3 Aliase (und 4 Alias-Aliase für die schnelle Verwendung) , die ich normalerweise in meine ~/.gitconfigDatei einwerfe :

[alias]
    lg = lg1
    lg1 = lg1-specific --all
    lg2 = lg2-specific --all
    lg3 = lg3-specific --all

    lg1-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
    lg2-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
    lg3-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n''          %C(white)%s%C(reset)%n''          %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)'

git lg/ git lg1Sieht wie folgt aus :

git lg1

git lg2 sieht aus wie das:

git lg2

und git lg3sieht so aus:

git lg3

Es sollte beachtet werden, dass dies nicht als End-All-Be-All-Lösung gedacht ist - es ist eine Vorlage, die Sie nach Ihren Wünschen ändern, ergänzen und korrigieren können. Wenn Sie diese verwenden möchten, empfehle ich:

  1. Fügen Sie sie Ihrem hinzu .gitconfig,
  2. Passen Sie nach Ihren Wünschen an (unterschiedliche Farbauswahl, unterschiedliche Linienanordnungen für die 2- und 3-Linien-Versionen usw.),
  3. Speichern Sie dann eine Kopie in einem Gist oder einem anderen Code-Snippet-Tool, damit Sie sie in .gitconfigZukunft kopieren und in s einfügen können (oder alternativ natürlich die Versionskontrolle Ihrer Punktedateien) .

Hinweis: Die Antwort wurde aus der Antwort unter stackoverflow.com/questions/1057564/pretty-git-branch-graphs kopiert und verbessert, da sie hier weitaus angemessener ist als dort. Die Kopie der anderen Frage wurde aus historischen Gründen belassen - sie ist jetzt geschlossen, und auf die Antwort wird durch eine Reihe anderer Antworten verwiesen.

Slipp D. Thompson
quelle
10
Vorschlag: Ersetzen %C(bold yellow)mit %C(auto)für mit unterschiedlichen Farben für HEAD, lokale und Remote - Zweige ( ref ).
Atcold
2
Beachten Sie, dass Sie das manuelle Hinzufügen von Einrückungen in Ihre Formatzeichenfolge vermeiden können, indem Sie Folgendes verwenden %w(): Auf diese Weise können Sie auch längere oder mehrzeilige Festschreibungsnachrichten ordnungsgemäß in Zeilenumbrüche umwandeln, ohne das Diagramm zu verfälschen.
Charliegreen
1
@ mbadawi23 Sie sind aus Gründen der Konsistenz zwischen Plattform- und Git-Installationen redundant. --abbrev-commitist da drin, weil die 2.-3. Zeile von Hand mit Leerzeichen eingerückt ist, und ich wollte unbedingt sicherstellen, dass die kurze SHA verwendet wird - also besser sicher als leid. --decorateist auch da drin, denn obwohl die Standardeinstellungen von Git dasselbe tun, könnte dies in verschiedenen Git-Versionen unterschiedlich oder unterschiedlich konfiguriert werden - für diese möchte ich unbedingt eine Dekoration. Letztendlich sind zusätzliche / redundante Flags hier nicht schlecht - dies geht in eine Datei; Es ist nicht etwas, das Sie die ganze Zeit tippen.
Slipp D. Thompson
1
@TimothyPulliam Am Ende jeder Zeile, die die Spitze jedes Zweigs / Tags darstellt, sehen Sie die zugehörigen Zweig- / Tag-Namen in Klammern - z. B. in den lg1& lg2Screenshots, (origin/test_on_10.8)die den Remote-Zweig zeigen, und im lg2Screenshot siehe (HEAD -> master, origin/master, origin/HEAD)sowohl lokale als auch entfernte Positionen des masterZweigs und HEAD. Dies entspricht den gängigen GUI-Tools zur Zweigvisualisierung für Git (gitk, SourceTree, TortoiseGit, Tower, Fork, GitX), allerdings mit etwas mehr Ausführlichkeit (einige GUI-Tools verwenden Farbcodierung) .
Slipp D. Thompson
2
@TimothyPulliam Um zu verstehen, welche Commits „Teil jedes Zweigs“ sind, müssen Sie die farbige Linie visuell nachzeichnen. Nahezu jedes Tool hilft Ihnen dabei nicht viel, da Git-Commits nicht zu einem Zweig gehören - sie implizieren (zur Zeit der Grafikvisualisierung), zu einem Zweig oder Tag zu gehören, der sie in ihrer übergeordneten Abstammung hat . Wenn kein Zweig / Tag auf ein Commit verweist und es verschwindet (aber etwa 2 Wochen lang nicht durch Müll gesammelt wird); Fügen Sie einen Zweig / ein Tag hinzu, der auf ein zuvor nicht referenziertes Commit verweist, und es wird erneut angezeigt. Ich hoffe das alles macht Sinn.
Slipp D. Thompson
236

Zu jedem dieser Rezepte (basierend auf Git Log oder Gitk) können Sie --simplify-by-decorationdie uninteressanten linearen Teile des Verlaufs hinzufügen , um sie zu reduzieren . Dadurch wird viel mehr von der Topologie auf einmal sichtbar. Ich kann jetzt große Geschichten verstehen, die ohne diese Option unverständlich wären!

Ich hatte das Bedürfnis, dies zu posten, weil es nicht so bekannt zu sein scheint, wie es sein sollte. Es erscheint nicht in den meisten Fragen zum Stapelüberlauf zur Visualisierung des Verlaufs, und ich musste ziemlich viel suchen, um es zu finden - selbst nachdem ich wusste, dass ich es wollte! Ich habe es endlich in diesem Debian-Fehlerbericht gefunden . Die erste Erwähnung zu Stack Overflow scheint diese Antwort von Antoine Pelisse zu sein.

Andrew
quelle
3
Perfekt - genau das, wonach ich gesucht habe! Es sollte mehr positive Stimmen bekommen; Fast jeder kennt sich bereits mit gitk / gitg / git log --graph aus, aber diese sind überhaupt nicht sehr nützlich, wenn Sie die Branchentopologie visualisieren möchten und sich nicht um einzelne Commits kümmern möchten.
Imolit
4
Genau das habe ich gebraucht, fantastisch. Es ist das einzige, was mir bei allen Antworten geholfen hat. --simplify-by-decorationmacht so klar, was los ist.
Ela782
9
Dies sollte wirklich die Antwort sein. git log --graph --all --simplify-by-decorationfunktioniert auch.
Irfy
Wenn wir nur --simplify-by-decorationbeim Hinzufügen von n Commits vor / nach jedem deokrierten Commit (wie -Bund -Afür grep) verwenden könnten .
Juni
Ich benutze diese Lösung so oft, dass ich sie als "Git Tree" aliasiere.
user16973 vor
76

Gitk manchmal schmerzhaft für mich zu lesen.

Geben Sie hier die Bildbeschreibung ein

Motiviere mich, GitVersionTree zu schreiben .

Geben Sie hier die Bildbeschreibung ein

Prüfsumme
quelle
3
@exhuma Ich habe eine PR mit dem Autor, um Mono zu unterstützen (getestet auf Ubuntu 13.10 gegen Mono 2.10)
Max Ehrlich
1
Ich habe festgestellt, dass GitVersionTree Zweige mit der Zeit am selben Ort hält, wodurch es einfacher wird zu sehen, wie sich die Dinge ändern.
sfranky
48

99,999% meiner Zeit beschäftigen sich mit der Geschichte von git lgund die 0,001% mit git log.

Ich möchte nur zwei Protokoll-Aliase freigeben, die nützlich sein könnten (konfigurieren aus .gitconfig):

[Alias]
     lg = log --graph --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
     hist = log --graph --full-history --all --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
  • git lg zeigt den aktuellen Zweigverlauf an.
  • git hist wird die gesamte Branchengeschichte sehen.
Yeo
quelle
44

Schauen Sie sich Gitkraken an - eine plattformübergreifende Benutzeroberfläche , die die Topologie auf übersichtliche Weise anzeigt.

Topologie

Hier ist ein kurzes Video-Tutorial zu einigen erweiterten Funktionen.

Pylang
quelle
6
Wie hat dieser Thread GitKraken, aber nicht den älteren und kostenlosen SourceTree? (Ich weiß, ich weiß, Atlassian macht nicht immer alles richtig. Aber SourceTree ist ein ziemlich gutes Werkzeug für die Visualisierung.)
XML
43

Ich git logmache gerne mit :

 git log --graph --oneline --branches

(auch mit --all, um auch entfernte Zweige anzuzeigen)

Funktioniert mit aktuellen Git-Versionen: eingeführt seit 1.6.3 ( Do, 7. Mai 2009 )

  • Die --pretty=<style>Option " " für die Protokollbefehlsfamilie kann jetzt als " --format=<style>" geschrieben werden.
    Darüber hinaus --format=%formatstringist eine Abkürzung für --pretty=tformat:%formatstring.

  • " --oneline" ist ein Synonym für " --pretty=oneline --abbrev-commit".

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0

Sie können auch die Spanne der Protokollanzeige (Anzahl der Commits) begrenzen:

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix

(nur die letzten 5 Commits anzeigen)


Was mir an der aktuell ausgewählten Lösung nicht gefällt, ist:

 git log --graph

Es wurden viel zu viele Informationen angezeigt (wenn ich nur eine kurze Zusammenfassung anzeigen möchte):

PS D:\git\tests\finalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC <[email protected]>
| Date:   Sat Nov 14 13:42:20 2009 +0100
|
|     a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC <[email protected]>
| Date:   Sat Nov 14 13:41:50 2009 +0100
|
|     a first bug10 fix
|

gitk ist großartig, zwingt mich aber, die Shell-Sitzung für ein anderes Fenster zu verlassen, während das schnelle Anzeigen der letzten n Commits oft genug ist.

VonC
quelle
Ich wähle auch diese Methode, habe aber einen Alias ​​erstellt, sodass die Eingabe von "git graph" mit der Ausführung von "git log --graph --decorate --oneline" identisch ist.
Will Pike
@ ConnerPike gute Idee. Ich habe den Alias ​​'lg' selbst: siehe stackoverflow.com/a/3667139/6309
VonC
35

Gitg ist ein großartiges Tool für Linux, ähnlich wie Gitx für OS X. Führen Sie einfach 'gitg' in der Befehlszeile irgendwo in der Baumstruktur Ihres Repositorys aus (genau wie bei gitx).

Jack Senechal
quelle
3
Mit so vielen Worten: gitg hat ein Dropdown-Menü, in dem man auswählen kann, welcher Zweig visualisiert werden soll. Dieses Dropdown-Menü enthält auch die Option "Alle".
Phluks
1
Oder Sie können damit beginnen gitg --all, wenn Sie vermeiden möchten, im Dropdown-Menü herumzuspielen.
Imolit
25

Ich fand "git-big-picture" ziemlich nützlich: https://github.com/esc/git-big-picture

Es erstellt hübsche 2D-Diagramme mit dot / graphviz anstelle der eher linearen, "eindimensionalen" Ansichten, die gitk und Freunde erstellen. Mit der Option -i werden die Verzweigungspunkte und Merge-Commits angezeigt, aber alles dazwischen wird weggelassen.

Frank Osterfeld
quelle
Ganz einfach zu bedienen, wenn Sie nicht viele Commits haben und eine einfache Lösung suchen, können Sie es vielleicht versuchen.
Wiswit
Es sollte mit der Anzahl der Commits gut skaliert werden (wenn Sie -i verwenden), es könnte unlesbar werden, wenn Sie komplexe Zweige und Zusammenführungen haben (aber welches Tool nicht)
Frank Osterfeld
1
Mit unserem mittelgroßen Projekt entsteht ein riesiges Bild mit Tonnen von Linien. Kann ich die Tiefe begrenzen? Dh Commits von den letzten N Tagen oder so.
Ondra Žižka
25

Ein schönes webbasiertes Tool ist ungit . Es läuft auf jeder Plattform, die node.js & git unterstützt. Es gibt ein Video, wie es für diejenigen funktioniert, die solche Dinge einfacher finden als lesen ...

Geben Sie hier die Bildbeschreibung ein

Sardathrion - gegen SE-Missbrauch
quelle
21

Schauen Sie sich BranchMaster an .

Ich habe es geschrieben, um die komplexe Zweigstruktur zu visualisieren, indem ich alle Commits zwischen ihnen zu einer einzigen Zeile zusammengefasst habe. Die Zahlen geben die Anzahl der Commits an.

Geben Sie hier die Bildbeschreibung ein

Stroyer
quelle
1
Das ist was ich suche. Gibt es dafür alternative Befehle / Tools?
Aalex Gabi
3
@AalexGabi Fügen Sie dies in Ihre gitconfig ein, es macht dasselbe, aber in der Befehlszeile gbranch = log --graph --simplify-by-decoration --pretty = format: '% C (gelb)% h% C (weiß)% d% C (fett schwarz)% ar% C (zurückgesetzt)% n '--all
kracejic
Wie erhalten Sie die Daten, um die Zweige zu visualisieren?
Snowfish
15

Niemand erwähnte tig ? Es faltet keine Zweige wie "BranchMaster", aber ...

Es ist schnell, läuft im Terminal.

Weil es so schnell ist (+ Tastatursteuerung), dass Sie eine großartige UX erhalten, ist es fast wie mein " ls" für Verzeichnisse, die Git-Repositorys enthalten.

https://jonas.github.io/tig/

Es hat die üblichen Verknüpfungen, um /zu suchen, etc.

Das Revisionsdiagramm

(ps. es ist das Terminal im Hintergrund dieses Screenshots, es sieht heutzutage besser aus, aber mein Computer weigert sich, einen Screenshot zu machen, sorry)

(pps. Ich benutze auch Gitkraken und habe wirklich klare Visualisierungen, aber es ist viel schwerer als tig)

Drähte
quelle
Ich bin ein Terminal-Liebhaber und Tig (Textmodus-Oberfläche für Git) ist ein gutes Werkzeug für die Interaktion mit Git-Repositorys. Es ist sehr nützlich, einschließlich der Diagrammansicht und des Git-Verlaufs. Ich empfehle es den Terminalliebhabern als zusätzliches Tool für die Git-Befehlszeile.
Hermeslm
15

Tortoise Git hat ein Tool namens "Revision Graph". Wenn Sie unter Windows arbeiten, klicken Sie einfach mit der rechten Maustaste auf Ihr Repo -> Tortoise Git -> Revisionsdiagramm.

cSn
quelle
1
Was für eine fantastische Funktion, Schildkrötengit für eine lange Zeit zu verwenden, aber diese Funktion nicht kennen.
Kreamik
Das ist viel einfacher. Vielen Dank.
Anoop
15

Giggle zeichnet wirklich schöne Grafiken.

Renat
quelle
Das Gleiche gilt für grittle , wenn Sie verwenden OmniGraffle
New Alexandria
Versuchte es und ich sehe eine Zeile pro Commit und keine Zeile pro Zweig / Tag. Es ist zu detailliert, wenn Sie Dutzende von Zweigen / Tags haben.
Aalex Gabi
12

Ich benutze die folgenden Aliase.

[alias]
    lol = log --graph --decorate --pretty=oneline --abbrev-commit
    lola = log --graph --decorate --pretty=oneline --abbrev-commit --all

Es enthält mehr Informationen im Farbschema als Aliase, die ich oben gesehen habe. Es scheint auch ziemlich häufig zu sein, so dass Sie möglicherweise die Möglichkeit haben, dass es in der Umgebung eines anderen vorhanden ist oder dass Sie es im Gespräch erwähnen können, ohne es erklären zu müssen.

Mit Screenshots und einer vollständigen Beschreibung hier: http://blog.kfish.org/2010/04/git-lola.html

Lokist
quelle
12

Für Mac-Benutzer können Sie das kostenlose Open-Source-Tool GitUp ( http://gitup.co/) ausprobieren (kein Wortspiel beabsichtigt).

Mir gefällt die Art und Weise, wie die Grafiken angezeigt werden. Sie ist klarer als einige der anderen Tools, die ich gesehen habe.

Das Projekt ist hier: https://github.com/git-up/GitUp

GitUp-Screenshot

Edward Tan
quelle
Dies ist das einzige Diagramm, in dem Sie die Zweige auf der x-Achse und die Zeit auf der y-Achse sehen. Es ist sehr intuitiv. GitUp ist absolut fantastisch! macOS ist es nicht mehr, also wechsle ich zu Windows und werde Gitup sehr vermissen.
w00t
11

Ich habe diesen git logAlias ~/.gitconfig, um den Diagrammverlauf anzuzeigen:

[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'

git lWird mit dem Alias Folgendes angezeigt:

Geben Sie hier die Bildbeschreibung ein

In Git 2.12 + können Sie sogar die Linienfarben des Diagramms mithilfe der log.graphColorsKonfigurationsoption anpassen .

Das Format der Protokolle ähnelt dem Format, wobei --onelineder Autorenname (jeweils .mailmap) und das relative Autorendatum hinzugefügt werden . Beachten Sie, dass die %C(auto)Syntax, die Git anweist, die Standardfarben für Commit-Hash usw. zu verwenden, in Git> = 1.8.3 unterstützt wird .

Eugene Yarmash
quelle
1
Es ist das allererste Mal, dass ich das Datum des Realtive-Autors sehe und es ist ziemlich schön! danke, ich werde das zu meiner gitconfig hinzufügen!
Simon C.
Windows-Benutzer sollten einfache Anführungszeichen durch doppelte Anführungszeichen ersetzen
PierDipi
11

Ich habe diesen Blog-Beitrag gefunden, der einen kurzen Weg zeigt:

git log --oneline --abbrev-commit --all --graph --decorate --color

Normalerweise erstelle ich einen Alias ​​für den obigen Befehl:

alias gl='git log --oneline --abbrev-commit --all --graph --decorate --color'

und einfach nur benutzen gl.

Sie können den Alias ​​auch zur Git-Konfiguration hinzufügen. Öffnen Sie ~/.gitconfigden [Alias] und fügen Sie die folgende Zeile hinzu.

[alias]
        lg = log --oneline --abbrev-commit --all --graph --decorate --color

und benutze es so: git lg

Sadegh
quelle
8

Mein persönlicher Lieblingsalias über .gitconfig lautet:

graph = log --graph --color --all --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%x20(%ce)%n%x20%s%n"
xero
quelle
6
Eine kleine Erklärung, wie ein Befehl aussehen wird, wäre großartig gewesen.
Max
8

Beachten Sie für Benutzer des VSCode-Texteditors die Git History Extension von D. Jayamanne:

Geben Sie hier die Bildbeschreibung ein

Pylang
quelle
Diese Erweiterung ist meiner Meinung nach etwas langsam. Es wird auch nicht automatisch aktualisiert und sieht unpoliert aus. Aber es macht einen guten Job, den Commit-Baum zu visualisieren ...
Aljazerzen
2
Eine weitere Erweiterung für Visual Studio Code ist Git Graph von mhutchie. Ich benutze dies zusammen mit GitLens.
Josef.B
7

Gitx ist auch ein fantastisches Visualisierungstool, wenn Sie sich unter OS X befinden.

KEND
quelle
3
Gitk (für alle) ist sehr ähnlich. nicht genau das gleiche, aber ziemlich ähnlich.
Xero
Es gibt ein paar Gabeln von Gitx - diese (rowanj) scheint im Moment die beste zu sein.
rjmunro
7

Ein weiterer Git-Log-Befehl. Dieser mit Spalten mit fester Breite :

git log --graph --pretty=format:"%x09%h | %<(10,trunc)%cd |%<(25,trunc)%d | %s" --date=short
David
quelle
6

Auschecken SmartGit. Es erinnert mich sehr an die Visualisierung der TortoiseHg- Filiale und ist für den nichtkommerziellen Gebrauch kostenlos.

Frederik Struck-Schøning
quelle
3

Unter Windows gibt es ein sehr nützliches Tool, das Sie verwenden können: Git-Erweiterungen. Es ist ein GUI-Tool und macht Git-Operationen sehr einfach.

Es ist auch Open Source.

http://gitextensions.github.io

Loneshark99
quelle
2

Ich habe es versucht, --simplify-by-decorationaber alle meine Zusammenführungen werden nicht angezeigt. Also schneide ich stattdessen nur Zeilen ohne "\" - und "/" -Symbole in den Kopfzeilen ab, während ich die Zeilen immer mit "(" behalte, um Zweige unmittelbar danach anzuzeigen. Wenn ich den Zweigverlauf anzeige, bin ich im Allgemeinen nicht an Commit-Kommentaren interessiert Ich entferne sie auch. Am Ende habe ich den folgenden Shell-Alias.

gbh () { 
    git log --graph --oneline --decorate "$@" | grep '^[^0-9a-f]*[\\/][^0-9a-f]*\( [0-9a-f]\|$\)\|^[^0-9a-f]*[0-9a-f]*\ (' | sed -e 's/).*/)/'
}
Isaac To
quelle
2

können wir es komplizierter machen?

Wie wäre es mit einem einfachen Git-Protokoll --all --decorate --oneline --graph (erinnere dich an A Dog = --All --Decorate --Oneline --Graph)

Pixel
quelle
1
Dies entspricht der akzeptierten Antwort. Jedoch Requisiten für die Mnemonik
aljgom
1

Auf der offiziellen Git-Website wurden einige plattformspezifische GUI-Tools von Drittanbietern verwendet. Klicken Sie hier git GUI Tools für Linux Platform

Ich habe gitgund GitKrakenfür Linux-Plattform verwendet. Beides ist gut, um den Commit-Baum zu verstehen

rookie4evr
quelle