Ajout de la branche git à L'invite de commande Bash

j'ai essayé d'ajouter la branche git sur laquelle je travaille actuellement (checked-out) sur l'invite de bash sans succès.. ( tout en gardant mon chemin actuel qui montre l'active directory/fichier intacte) J'ai un .bashrc fichier sur ma maison, mais j'ai également vu beaucoup de gens mentionner le .le fichier de profil..

139
demandé sur George Katsanos 2013-04-08 19:41:57

10 réponses

Note ce type d'invite est maintenant géré par contrib/completion/ git-prompt.sh et sa variable __git_ps1_branch_name .

  • Copiez ce fichier quelque part (par exemple ~/.git-prompt.sh ).
  • ajouter la ligne suivante à votre .bashrc/.zshrc :
  source ~/.git-prompt.sh
  • changez votre PS1 pour appeler __git_ps1 comme commande-substitution:
  Bash: 
  PS1='[\u@\h \W$(__git_ps1 " (%s)")]$ '
  ZSH:  
  setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]$ '

mais notez que seul git 1.9.3 (mai 2014) ou plus tard vous permet de en toute sécurité afficher ce nom de branche(!)

voir commit 8976500 par Richard Hansen ( richardhansen ) :

à la fois bash et zsh objet de la valeur de PS1 à expansion du paramètre , substitution de commande , et expansion arithmétique.

plutôt que d'inclure le nom brut de la succursale non enregistrée dans PS1 lorsqu'on utilise deux - ou mode à trois arguments, construire PS1 pour référencer une variable qui détient le nom de la branche.

parce que les shells ne s'étendent pas de façon récursive, cela évite l'exécution de code arbitraire par les noms de branches spécialement conçus, tels que

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

quel esprit sournois nommerait une branche comme ça? ;) ( à côté D'une maman comme dans xkcd )


still_dreaming_1 reports dans les commentaires :

cela semble fonctionner très bien si vous voulez un prompt de couleur avec xterm (dans mon .bashrc ):

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

tout est d'une couleur différente, y compris la branche.

Dans Linux Mint 17.3 Cannelle 64 bits:

PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[01;34m\] \w\[3[00m\]$(__git_ps1) $ ' 
138
répondu VonC 2017-05-23 11:55:09

suivez les étapes comme suit: (Linux)

éditer le fichier ~/.bashrc , pour entrer les lignes suivantes à sa fin (dans le cas, de Mac, le fichier serait ~/.bash_profile )

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

maintenant, démarrez la nouvelle fenêtre du terminal, et essayez d'entrer dans n'importe quel git-repo. La branche courante, avec l'invite de commandes.

4 plus D'information-MAC / Linux

46
répondu parasrish 2016-02-05 07:27:31

1 - Si vous n'avez pas bash-completion ... : sudo apt-get install bash-completion

2 - éditez votre .bashrc fichier et vérifier la présence (ou ajouter) :

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

3 -... avant votre ligne de sollicitation: export PS1='$(__git_ps1) \w$ '

( __git_ps1 montrera votre branche git)

4 - faire source .bashrc

EDIT:

Autres lectures : Ne pas Réinventer la Roue

30
répondu Eric Lavoie 2017-05-02 14:22:51

Voici comment j'ai configuré l'invite pour afficher le statut Git:

Obtenir git-invite de script:

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

et personnalisez votre invite en ajoutant le code suivant dans votre .bashrc fichier:

# Load Git functions
source ~/.git-prompt.sh

# Syntactic sugar for ANSI escape sequences
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"

si vous voulez en savoir plus, vous pouvez obtenir tous les fichiers dotfiles ici: https://github.com/jamming/dotfiles

19
répondu jamming 2017-03-08 22:20:11

pour mac, cela fonctionne vraiment bien: 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/* \(.*\)/ ()/'
}

export PS1="\u@\h \W\[3[32m\]$(parse_git_branch)\[3[00m\] $ "
6
répondu Mike Chen 2015-12-24 09:26:22
vim ~/.bash

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

export PS1="\u@\h \[3[32m\]\w\[3[33m\]$(parse_git_branch)\[3[00m\] $"

pour refléter les derniers changements, exécutez la commande

source ~/.bashrc

sortie: -

chandrakant@NDL41104 ~/Chandrakant/CodeBase/LaravelApp (development) $
1
répondu Chandrakant Ganji 2018-04-24 13:56:33

si vous utilisez le coquille de poisson son tout à fait droit en avant. le poisson est une coquille interactive qui vient avec beaucoup de goodies. Vous pouvez l'installer en utilisant apt-get .

sudo apt-get install fish

vous pouvez alors modifier le réglage de l'invite en utilisant

> fish_config 
Web config started at 'http://localhost:8001/'. Hit enter to stop.
Created new window in existing browser session.

maintenant allez à http://localhost:8001/ ouvrez l'onglet invite et choisissez l'option classic + git

enter image description here

cliquez maintenant sur le bouton use prompt et vous êtes positionné.

0
répondu Shasak 2016-05-23 08:32:25
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ ()/'
}
export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]$(parse_git_branch)\n$ '
0
répondu xyz 2018-02-15 11:56:24

suivez les étapes ci-dessous pour afficher le nom de la branche de votre git repo dans ubuntu terminal:

step1: ouvrir le terminal et éditer .bashrc à l'aide de la commande suivante.

vi .bashrc

step2: ajouter la ligne suivante à la fin du .bashrc fichier :

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

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

etape 3: de la source .bashrc dans le répertoire root (home) en faisant:

/ rootfolder:~$ source .bashrc

Step4: redémarrez et ouvrez le terminal et vérifiez le cmd. Naviguez vers votre chemin de répertoire git repo et c'est terminé. :)

0
répondu BinDev 2018-04-19 07:55:40

j'ai essayé un petit script en python qui va dans un dossier bin.... 'gitprompt" fichier

#!/usr/bin/env python
import subprocess, os
s = os.path.join(os.getcwd(), '.git')
def cut(cmd):
    ret=''
    half=0
    record = False
    for c in cmd:
        if c == "\n":
            if not (record):
                pass
            else:
                break
        if (record) and c!="\n":
            ret = ret + c
        if c=='*':
            half=0.5
        if c==' ':
            if half == 0.5:
                half = 1
        if half == 1:
            record = True
    return ret
if (os.path.isdir(s)):
    out = subprocess.check_output("git branch",shell=True)
    print cut(out)
else:
    print "-"

le Rendre exécutable et des trucs

puis ajuster l'invite de bash en conséquence comme:

\u:\w--[$(gitprompt)] $ 
-1
répondu Love_for_CODE 2015-07-04 18:58:35