Visualisierung der Zweigtopologie in Git
Ich spiele mit Git isoliert auf meinem eigenen Rechner, und ich finde es schwierig, ein mentales Modell aller meiner Zweige und Übertragungen zu erhalten. Ich weiß, dass ich ein git log
machen kann, um die Commit-Historie von dort aus zu sehen, wo ich mich befinde, aber gibt es eine Möglichkeit, die gesamte Branch-Topographie zu sehen, so etwas wie diese ascii-Maps, die überall zur Erklärung von Branches verwendet zu werden scheinen?
.-A---M---N---O---P
/ / / / /
I B C D E
\ / / / /
`-------------'
Es fühlt sich einfach so an, als ob jemand, der kommt und versucht, mein Repository zu übernehmen, Schwierigkeiten hätte, herauszufinden, was genau vor sich geht.
Ich schätze, ich bin beeinflusst von AccuRev's Stream-Browser...
830
3
git log --graph
odergitk
. (Beide akzeptieren auch--all
, was alle Zweige anzeigt, anstatt nur den aktuellen.)Bearbeiten: Für Zweignamen und eine kompakte Ansicht, versuchen Sie es:
git log --graph --decorate --oneline
Ich verwende normalerweise
Mit Farben (wenn Ihre Shell Bash ist):
Dies wird eine textbasierte Darstellung wie diese ausgeben:
(Sie könnten auch einfach
git log --format=oneline
verwenden, aber das würde die Commit-Meldungen mit Zahlen verbinden, was IMHO weniger schön aussieht).Um eine Abkürzung für diesen Befehl zu erstellen, sollten Sie Ihre Datei
~/.gitconfig
bearbeiten:Wie Sodel the Vociferous jedoch in den Kommentaren anmerkt, ist ein solch langer Formatierungsbefehl schwer zu merken. Normalerweise ist es kein Problem, da man es in die Datei
~/.gitconfig
einfügen kann. Wenn Sie sich jedoch manchmal an einem entfernten Rechner anmelden müssen, an dem Sie die Konfigurationsdatei nicht ändern können, können Sie eine einfachere, aber schneller zu tippende Version verwenden:Ich mag es, mit
git log
, zu tun:(auch mit --all, um auch entfernte Zweige zu sehen)
Funktioniert mit aktuellen Git-Versionen: eingeführt seit 1.6.3 (Do, 7. Mai 2009)
Sie können auch den Zeitraum der Protokollanzeige begrenzen (Anzahl der Commits):
(zeigt nur die letzten 5 Commits an)
Was mir an der aktuell gewählten Lösung nicht gefällt, ist:
Es werden viel zu viele Informationen angezeigt (wenn ich nur eine kurze Zusammenfassung sehen möchte):
gitk
ist großartig, zwingt mich aber dazu, die Shell-Sitzung zu verlassen und in ein anderes Fenster zu wechseln, während die schnelle Anzeige der letzten n Commits oft ausreicht.