Titelbild dieses Eintrags

Aktuellen Branch im Terminal anzeigen

Jedes Mal das gleiche Spiel. Ich setzte meine Linux-Distribution neu auf, installiere Git, klone mir mein erstes Projekt und sehe so einiges… nur nicht in welchen Branch ich mich gerade aufhalte. Also geht das Googlen wieder los.

Vielleicht merke ich es mir ja mal, wenn ich es in meinem Blog festhalte und auch Dir erzähle, wie ich es auf meinem Ubuntu-System löse.

Eingabeaufforderung (Prompt)

Sobald Du ein Terminal öffnest, siehst Du ein Fenster mit einer Eingabeaufforderung, der Prompt.

Wie diese aussieht, hängt von der Konfiguration ab, die Du in der .bashrc-Datei in Deinem Home-Verzeichnis findest. Also ~/.bashrc.

Mal reingeschaut? Da steht so einiges drin. Wichtig ist für uns allerdings nur folgende Zeile.

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Wie Du sehen kannst, wird hier die Variable PS1 gesetzt, die Du Dir übrigens auch mittels echo $PS1 ausgeben lassen kannst. Mit ein bisschen Fantasie kannst Du erkennen, dass hier irgendwie mein Benutzername, der Name meines Rechners und mein aktueller Pfad zusammengewürfelt werden. Und genau da setzen wir an. Ich möchte nach meinem Pfad auch meinen Branch-Namen sehen, in dem ich mich gerade aufhalte.

Wir komm ich jetzt an ’ne Lösung?

Nun gut. Jetzt gibt es auf vielen Seiten verschiedene Möglichkeiten und Anleitungen, wie Du da irgendwie dein Branch siehst. Vieles davon ist Mist, baut auf komische Skripte auf oder verlangsamt tatsächlich Deine Prompt.

Ein Glück liefert uns Git eine (fast) fertige Lösung, die wir einfach nur einbinden müssen! Nämlich eine Datei, die wir unter folgendem Pfad finden, sobald wir Git installiert haben.

/usr/lib/git-core/git-sh-prompt

(Übrigens auch auf GitHub zu finden: https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh)

In dieser Datei findest Du eine Funktion, mit der Dein aktueller Branch ermittelt wird. Nämlich __git_ps1.

Wie bau ich das jetzt ein?

Nun kommt wieder die .bashrc-Datei ins Spiel. Da diese Datei bei jedem Öffnen einer Eingabeaufforderung ausgeführt wird, tragen wir hier nun mit folgendem Skript ein, dass im selben Kontext auch die git-sh-prompt-Datei ausgeführt werden soll. Somit stehen uns danach alle Variablen und Funktion dieser Datei zur Verfügung.

source /usr/lib/git-core/git-sh-prompt

Jetzt wo uns __git_ps1 zur Verfügung steht, binden wir diese Funkton ganz einfach in unser Prompt ein. Das heißt, dass wir die PS1-Variable nun selbst setzen.

Dafür suchen wir uns die richtige stelle aus und tragen nun $(__git_ps1) ein. Bei mir siehst dann wie folgt aus:

source /usr/lib/git-core/git-sh-prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ '

Das war schon alles. Nachdem Du Deine Änderungen am Ende Deiner .bashrc eingetragen und diese abgespeichert hast, solltest Du nun genauso wie ich, am Ende Deines deiner Prompt auch Deinen Branch-Namen sehen.