Git-Zweig an der Bash-Eingabeaufforderung hinzufügen

Lesezeit: 8 Minuten

Ich habe ohne Erfolg versucht, den Git-Zweig, an dem ich gerade arbeite (ausgecheckt), an der Bash-Eingabeaufforderung hinzuzufügen.während ich meinen aktuellen Pfad behalte, der das aktive Verzeichnis/die aktive Datei anzeigt intakt) Ich habe eine .bashrc-Datei zu Hause, aber ich habe auch viele Leute gesehen, die die .profile-Datei erwähnt haben.

  • Ich denke, dies wäre besser im Unix/Linux-Austausch gefragt.

    – Cole Busby

    8. April 2013 um 15:43 Uhr

  • Ich habe ungefähr 10 verschiedene Anleitungen ausprobiert, einige davon haben funktioniert, aber ich habe den Git-Zweig bekommen und das Arbeitsverzeichnis / den Arbeitspfad verloren, den ich zuvor hatte.

    – Georg Katsanos

    8. April 2013 um 15:54 Uhr

  • Git 1.9.3+ bietet eine interessante Möglichkeit, den Zweig anzuzeigen: siehe meine Antwort unten

    – VonC

    12. Juli 2014 um 19:23 Uhr

  • @cole busby anscheinend nicht.

    – Georg Katsanos

    7. September 2017 um 6:43 Uhr

  • @GeorgeKatsanos vier Jahre haben es mir sicher gezeigt :p

    – Cole Busby

    11. September 2017 um 4:05 Uhr

Git Zweig an der Bash Eingabeaufforderung hinzufugen
VonC

git 1.9.3 oder höher: verwenden __git_ps1

Git bietet ein Shell-Skript namens git-prompt.shdie eine Funktion enthält __git_ps1 das

druckt Text zum Hinzufügen zur Bash-PS1-Eingabeaufforderung (einschließlich Zweignamen)

Seine grundlegendste Verwendung ist:

$ __git_ps1
(master)

Es nimmt auch eine optionale Formatzeichenfolge an:

$ __git_ps1 'git:[%s]'
git:[master]

Wie man es bekommt

Kopieren Sie die Datei zunächst irgendwohin (z ~/.git-prompt.sh).

Option 1: Verwenden Sie eine vorhandene Kopie in Ihrem Dateisystem. Beispiel (Mac OS X 10.15):

$ find / -name 'git-prompt.sh' -type f -print -quit 2>/dev/null
/Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh

Option 2: Ziehen Sie das Skript von GitHub.

Fügen Sie als Nächstes die folgende Zeile zu Ihrer hinzu .bashrc/.zshrc:

source ~/.git-prompt.sh

Ändern Sie schließlich Ihre PS1 anrufen __git_ps1 als Befehlsersatz:

Bash:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

Zsch:

setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '

git < 1.9.3

Beachten Sie jedoch, dass nur Git 1.9.3 (Mai 2014) oder später erlaubt dir … zu machen sicher diesen Zweignamen anzeigen (!)

Sehen 8976500 festschreiben durch Richard Hansen (richardhansen):

Sowohl bash als auch zsh unterliegen dem Wert von PS1 Parametererweiterung, Befehlsersetzungund arithmetische Erweiterung.

Anstatt den rohen, nicht maskierten Branch-Namen einzufügen PS1 Wenn Sie im Zwei- oder Drei-Argument-Modus ausgeführt werden, konstruieren Sie PS1 um auf eine Variable zu verweisen, die den Zweignamen enthält.

Da die Shells nicht rekursiv erweitert werden, wird die Ausführung willkürlichen Codes durch speziell gestaltete Zweignamen wie z

'$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)'.

Welcher hinterhältige Verstand würde einen solchen Zweig benennen? 😉 (Neben einer Mutter wie in xkcd)

Mehr Beispiele

still_dreaming_1 berichtet in den Kommentaren:

Dies scheint großartig zu funktionieren, wenn Sie eine Farbaufforderung mit wünschen xterm (in meinem .bashrc):

PS1='\[\e]0;\u@\h: \w\a\]\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\03‌​3[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ ' 

Alles hat eine andere Farbe, auch der Ast.

In Linux Mint 17.3 Cinnamon 64-Bit:

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

  • wie Sie die Eingabeaufforderung auf den aktuellen Git-Zweig setzen können, wenn Sie sich tatsächlich in einem Git-Repo befinden. Wenn Sie sich also in einem normalen Verzeichnis befinden, wird die normale Eingabeaufforderung angezeigt.

    – Zubair Alam

    3. September 2014 um 5:35 Uhr

  • @still_dreaming_1 Sie können Git jedoch sehr einfach aktualisieren oder kompilieren: stackoverflow.com/a/24847953/6309

    – VonC

    21. Oktober 2015 um 4:35 Uhr

  • Dies scheint großartig zu funktionieren, wenn Sie mit xterm (in by .bashrc) eine farbige Eingabeaufforderung wünschen: PS1='\[\e]0;\u@\h: \w\a\]\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$' Alles hat eine andere Farbe, auch der Ast.

    – still_dreaming_1

    21. Oktober 2015 um 17:41 Uhr


  • Diese PS1, die ich gepostet habe, wird für mich in Linux Mint 17.3 Cinnamon 64-Bit nicht mehr korrekt angezeigt, aber dies tut es: PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\]$(__git_ps1) \$ '

    – still_dreaming_1

    2. Februar 2016 um 22:55 Uhr

  • Aktueller Meister ist bei github.com/git/git/blob/master/contrib/completion/git-prompt.sh – Ich denke, wir sollten in der Antwort darauf verlinken, falls in Zukunft ein Exploit gefunden wird? Außerdem: Ich musste das $ und ” in meiner PS1-Zeile maskieren, aber das liegt wahrscheinlich an seiner Komplexität.

    – ArchimedesMP

    21. Juni 2019 um 14:06 Uhr


Führen Sie die folgenden Schritte aus: (Linux)

Bearbeiten Sie die Datei ~/.bashrcum die folgenden Zeilen an seinem Ende einzugeben (Im Falle eines Mac wäre die Datei ~/.bash_profile)

# Git branch in prompt.
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

Starten Sie nun das neue Terminalfenster und versuchen Sie, ein beliebiges Git-Repo aufzurufen. Der aktuelle Zweig wird mit der Eingabeaufforderung angezeigt.

4 Weitere Informationen – MAC/Linux

  • Ich denke nicht, dass es notwendig ist, das ~/.bash_profile anstelle von ~/.bashrc unter OSX zu ändern.

    – Bergkeks

    23. Juli 2016 um 13:06 Uhr

  • Bitte sehen apple.stackexchange.com/questions/119711/… UND apple.stackexchange.com/questions/51036/….

    – Parasisch

    24. Juli 2016 um 6:30 Uhr


  • Erwägen Sie für die Farbe, den „git branch“ in „git -c color.ui=always branch“ in parse_git_branch oben zu ändern. Es hat die gleiche Farbe, die git branch verwendet, um den aktuellen Branch hervorzuheben.

    – Watt

    21. September 2016 um 14:01 Uhr


  • Inspiriert von Ihnen, aber ich möchte, dass mein Arbeitsverzeichnis der vollständige Pfad (\w) mit blauer Hervorhebung ist. Beispiel: gist.github.com/rmharrison/1885ef6bbb0226eb7b42e2135d5eeca2

    – rmharrison

    27. September 2018 um 5:31 Uhr


  • Für MAC musste ich das Escape vor dem $(parse_git_branch) eliminieren, damit dies so funktioniert: PS1="\u@\h \W\[\033[32m\]$(parse_git_branch)\[\033[00m\] $ ". Obwohl ich ‘Export’ auch nicht vor PS1 verwende.

    – Chris

    21. August 2019 um 19:15 Uhr


Git Zweig an der Bash Eingabeaufforderung hinzufugen
Eric Lavoie

1- Wenn Sie nicht haben bash-Vervollständigung … : sudo apt-get install bash-completion

2- Bearbeiten Sie Ihre .bashrc Datei und überprüfen (oder hinzufügen):

if [ -f /etc/bash_completion ]; then
  . /etc/bash_completion
fi

3- … vor Ihrer Aufforderungszeile: export PS1='$(__git_ps1) \w\$ '

(__git_ps1 zeigt deinen Git-Zweig)

4- tun source .bashrc

BEARBEITEN :

Weiterführende Literatur: Erfinden Sie das Rad nicht neu

  • Dies scheint die einzige Möglichkeit zu sein, wie es für mich funktioniert, wenn ich eine Gehöft- / Landstreichermaschine verwende

    – Iannazzi

    21. Dezember 2015 um 20:14 Uhr

  • Funktioniert gut unter Ubuntu 16.04

    – Frug

    28. Mai 2016 um 19:09 Uhr

  • Der Link „Erfinde das Rad nicht neu“ ist leider defekt.

    – Taylor R

    29. März 2017 um 4:33 Uhr

  • @TaylorR Ich habe den Link wiederhergestellt.

    – VonC

    30. März 2017 um 20:11 Uhr

Git Zweig an der Bash Eingabeaufforderung hinzufugen
jaguililla

So habe ich die Eingabeaufforderung konfiguriert, um den Git-Status anzuzeigen:

Git-Prompt-Skript abrufen:

curl -o ~/.git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

Und passen Sie Ihre Eingabeaufforderung an, indem Sie den folgenden Code in Ihre .bashrc-Datei einfügen:

# Git-Funktionsquelle laden ~/.git-prompt.sh # Syntaktischer Zucker für ANSI-Escape-Sequenzen txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur="\e[0;35m" # Purple
txtcyn='\e[0;36m' # Cyan
txtwht="\e[0;37m" # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur="\e[1;35m" # Purple
bldcyn='\e[1;36m' # Cyan
bldwht="\e[1;37m" # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur="\e[4;35m" # Purple
undcyn='\e[4;36m' # Cyan
undwht="\e[4;37m" # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur="\e[45m"   # Purple
bakcyn='\e[46m'   # Cyan
bakwht="\e[47m"   # White
txtrst="\e[0m"    # Text Reset

# Prompt variables
PROMPT_BEFORE="$txtcyn\u@\h $txtwht\w$txtrst"
PROMPT_AFTER="\\n\\\$ "

# Prompt command
PROMPT_COMMAND='__git_ps1 "$PROMPT_BEFORE" "$PROMPT_AFTER"'

# Git prompt features (read ~/.git-prompt.sh for reference)
export GIT_PS1_SHOWDIRTYSTATE="true"
export GIT_PS1_SHOWSTASHSTATE="true"
export GIT_PS1_SHOWUNTRACKEDFILES="true"
export GIT_PS1_SHOWUPSTREAM="auto"
export GIT_PS1_SHOWCOLORHINTS="true"

If you want to find out more, you can get all the dotfiles here: https://github.com/jamming/dotfiles

For mac, this works really well: http://martinfitzpatrick.name/article/add-git-branch-name-to-terminal-prompt-mac/:

# Git branch in prompt.
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' } export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

1646252889 591 Git Zweig an der Bash Eingabeaufforderung hinzufugen
Gemeinschaft

Öffnen Sie zunächst Ihr Bash-Profil in Ihrem Home-Verzeichnis. Der einfachste Weg, Ihre zu öffnen und zu bearbeiten bash_profile mit Ihrem Standard-Editor.

Zum Beispiel öffne ich es mit dem VS-Code mit diesem Befehl: code .bash_profile.

Fügen Sie dann einfach die folgenden Codes in Ihre Bash ein.

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

Die Funktion

parse_git_branch()

ruft den Filialnamen ab und kann ihn dann über PS1 in Ihrem Terminal anzeigen.

Hier,

\u = Benutzername

@ = Statischer Text

\h = Computername

\w = Aktuelles Verzeichnis

$ = Statischer Text

Sie können diese Variablen für weitere Anpassungen ändern oder entfernen.


Wenn Sie Git zum ersten Mal im Terminal oder sofort nach der Konfiguration verwenden, können Sie den Branch-Namen möglicherweise manchmal nicht sehen.

Machen Sie sich keine Sorgen, wenn dieses Problem auftritt. Erstellen Sie in diesem Fall einfach ein Beispiel-Repository und übertragen Sie es nach einigen Änderungen. Wenn der Commit-Befehl einmal ausgeführt wird, findet das Terminal von da an den Git-Zweig.


Screenshot: Git-Zweig im Terminal

root:~/project#  -> root:~/project(dev)# 

fügen Sie den folgenden Code am Ende Ihrer ~/.bashrc hinzu

force_color_prompt=yes
color_prompt=yes
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

915840cookie-checkGit-Zweig an der Bash-Eingabeaufforderung hinzufügen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy