Ein Git-Baum kann im Terminal nicht angezeigt werden

439

Der alte Artikel von Killswitchcollective.com vom 30. Juni 2009 enthält die folgenden Ein- und Ausgänge

git co master
git merge [your_branch]
git push

upstream    A-B-C-D-E            A-B-C-D-E-F-G
                 \        ---->               \
your branch       C-D-E                        G

Ich bin interessiert, wie Sie die baumartige Ansicht von Commits in Ihrem Terminal erhalten, ohne Gitk oder Gitx in OS / X zu verwenden.

Wie können Sie die baumartige Ansicht von Commits im Terminal erhalten?

Léo Léopold Hertz 준영
quelle
2
Die Frage ist nicht wichtig, aber der betreffende Artikel ist nicht mehr verfügbar. Eine zwischengespeicherte Kopie ist über das Internetarchiv verfügbar: web.archive.org/web/20110831142839/http://…
Alan De Smet

Antworten:

795

Wie können Sie die baumartige Ansicht von Commits im Terminal erhalten?

git log --graph --oneline --all

ist ein guter Anfang.

Sie können einige seltsame Briefe bekommen. Sie sind ASCII-Codes für Farben und Struktur. Um dieses Problem zu lösen, fügen Sie Folgendes hinzu .bashrc:

export LESS="-R"

so dass Sie Tigs ASCII-Filter von nicht verwenden müssen

git log --graph --pretty=oneline --abbrev-commit | tig   // Masi needed this 

Das textbasierte Artikeldiagramm von Git-ready enthält weitere Optionen:

git log --graph --pretty=oneline --abbrev-commit

Git Log Graph

In Bezug auf den Artikel, den Sie erwähnen, würde ich Pods Antwort folgen : handgemachte Ad-hoc-Ausgabe.


Jakub Narębski erwähnt im Kommentar- TIG eine ncurses-basierte Textmodus-Oberfläche für Git. Siehe ihre Veröffentlichungen .
Bereits2007 wurde eine --graphOption hinzugefügt.

VonC
quelle
1
Ich habe es gerade auf meinem Repo getestet. Es funktioniert, aber ich bin unter Windows mit MSysGit1.6.3.
VonC
files.getdropbox.com ist hier bei der Arbeit blockiert :( Ich werde Ihr Bild in ungefähr einer Stunde sehen, Zeit nach Hause zu kommen.
VonC
@Vonc: Ich habe jetzt zwei für den ersten Befehl eingegeben. Ich erhalte eine ähnliche Ansicht wie auf dem Bild für den zweiten Befehl.
Léo Léopold Hertz 준영
9
Es gibt auch 'tig', eine Textmodus-Oberfläche für git (unter Verwendung von ncurses), die eine grafische Verlaufsansicht im Terminal hatte, bevor es die Option '--graph' für git-log gab.
Jakub Narębski
2
Ich finde --decorate, dass dies auch für diese Art von Anzeige unverzichtbar ist - es zeigt Ihnen neben dem abgekürzten Commit-Namen die Ref-Namen (Zweige, Remote und lokal).
Matt Enright
311

Eine Lösung besteht darin, einen Alias ​​in Ihrem zu erstellen .gitconfigund ihn einfach aufzurufen:

[alias]
    tree = log --graph --decorate --pretty=oneline --abbrev-commit

Und wenn Sie es das nächste Mal aufrufen, verwenden Sie:

git tree

Um es in Ihre ~ / .gitconfig einzufügen, ohne es bearbeiten zu müssen, haben Sie folgende Möglichkeiten:

git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit"  

(Wenn Sie --global nicht verwenden, wird es in die .git / config Ihres aktuellen Repos eingefügt.)

Marouane Gazanayi
quelle
1
Wie ist dies kein Standardalias? Ich denke, es würde Git's CLI etwas weniger ärgerlich machen und wir können das nicht haben ...
Timmmm
123
git log --oneline --decorate --all --graph

Ein visueller Baum mit Zweignamen.

Verwenden Sie dies, um es als Alias ​​hinzuzufügen

git config --global alias.tree "log --oneline --decorate --all --graph"

Du nennst es mit

git tree

Git Tree

Sebastian Patten
quelle
2
Sehr schön, dieser hier. Ich benutze es in Kombination mit less -Swie hier beschrieben , um zu verhindern, dass gewickelte Linien den Baum verschleiern.
DJVG
60

tig

Wenn Sie einen interaktiven Baum möchten , können Sie diesen verwenden tig. Es kann unter brewOSX und apt-getLinux installiert werden .

brew install tig
tig

Das ist was du bekommst:

Geben Sie hier die Bildbeschreibung ein

Mohsen
quelle
Können Sie einen solchen Baum wie in VonCs Antwort von Tig bekommen? Wir verwenden Tig in VonCs Antwort nur als Ascii-Filter.
Léo Léopold Hertz 준영
4

Wenn Sie Ihre Befehle kurz halten, können Sie sie leichter merken:

git log --graph --oneline
JSON C11
quelle
1

Ich würde jedem empfehlen, den vollständigen Befehl aufzuschreiben

git log --all --decorate --oneline --graph

anstatt einen Alias ​​zu erstellen.

Es ist gut, die Befehle in Ihren Kopf zu bekommen, damit Sie es auswendig können, dh nicht von Aliasnamen abhängen, wenn Sie Maschinen wechseln.

Saxophonist
quelle
2
Es ist tatsächlich git log --all --decorate --oneline --graphnach der Mnemonik git log a dog;)
VonC
@VonC Das Endergebnis ist das gleiche. Wie auch immer, ich stimme dir zu. Danke für die Rückmeldung.
Saxophonist
Ja, das hat der Smiley ;)am Ende meines vorherigen Kommentars (unvollkommen) zu vermitteln versucht: Sie können diese Option in beliebiger Reihenfolge verwenden. Ich finde "log a dog" einfach lustig :)
VonC
1
Oder Sie könnten scp ~/.bashrc root@remote:~/und Ihre Aliase gehen ganz schnell über.
Adminy