web-dev-qa-db-fra.com

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

J'ai essayé d'ajouter la branche git sur laquelle je travaille actuellement (extrait) sur l'invite bash sans succès. (Tout en conservant mon chemin actuel qui montre le répertoire actif/fichier intact) fichier .bashrc sur ma maison, mais j’ai aussi vu beaucoup de gens mentionner le fichier .profile .. 

144
George Katsanos

Notez que 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).
  • Ajoutez la ligne suivante à votre .bashrc/.zshrc:
  source ~/.git-Prompt.sh
  • Changez votre PS1 pour appeler __git_ps1 en substitution de commande:
  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 version ultérieure vous permet d'afficher en toute sécurité ce nom de branche (!)

See commit 8976500 par Richard Hansen (richardhansen) :

Bash et zsh soumettent la valeur de PS1 à paramètre développement, substitution de commande et à développement arithmétique. 

Plutôt que d'inclure le nom de branche brut et non échappé dans PS1 lors de l'exécution en deux ou en En mode trois arguments, construisez PS1 pour référencer une variable qui contient le nom de la branche. 

Etant donné que les shells ne se développent pas de manière récursive, cela évite l'exécution de code arbitraire par des 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 très bien si vous voulez une invite de couleur avec xterm (dans mon .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)\$ ' 

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

Dans 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) \$ ' 
143
VonC

Suivez les étapes ci-dessous: (Linux)

Editez le fichier ~/.bashrc, pour entrer les lignes suivantes à sa fin (dans le cas d'un Mac, le fichier serait ~/.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\] $ "

Maintenant, lancez la nouvelle fenêtre de terminal et essayez d’entrer dans n’importe quel git-repo. La branche actuelle serait affichée, avec l'invite.

4 Plus d'infos - MAC/Linux

48
parasrish

1- Si vous n'avez pas complétion bash ...: Sudo apt-get install bash-completion

2- Editez votre fichier .bashrc et vérifiez (ou ajoutez):

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

3- ... avant votre ligne d'invite: export PS1='$(__git_ps1) \w\$ '
(__git_ps1 affichera votre branche git)

4- faire source .bashrc 

MODIFIER : 

Lectures supplémentaires: Ne réinventez pas la roue

33
Eric Lavoie

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

Obtenez le script git-Prompt:

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 fichier .bashrc:

# 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 dot ici: https://github.com/jamming/dotfiles

20
jamming

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/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "
6
Mike Chen
vim ~/.bash

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

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

Pour refléter les dernières modifications, exécutez la commande suivante

source ~/.bashrc

Sortie:-

chandrakant@NDL41104 ~/Chandrakant/CodeBase/LaravelApp (development) $
2
Chandrakant Ganji

Commencez par ouvrir votre profil Bash dans votre répertoire personnel. Le moyen le plus simple d’ouvrir et d’éditer votre bash_profile en utilisant votre éditeur par défaut.

Par exemple, je l'ouvre à l'aide du code VS à l'aide de la commande suivante: code .bash_profile.

Ensuite, collez simplement les codes suivants sur votre Bash.

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\] $ "

La fonction

parse_git_branch ()

va chercher le nom de la branche et ensuite via PS1 vous pouvez le montrer dans votre terminal.

Ici,

\ u = nom d'utilisateur

@ = Texte statique

\ h = Nom de l'ordinateur

\ w = Répertoire actuel

$ = Texte statique

Vous pouvez modifier ou supprimer ces variables pour plus de personnalisation.


Si vous utilisez Git pour la première fois dans un terminal ou immédiatement après la configuration, vous ne pourrez parfois pas voir le nom de la branche.

Si vous rencontrez ce problème, ne vous inquiétez pas. Dans ce cas, créez un exemple de référentiel et validez-le après quelques modifications. Lorsque la commande commit sera exécutée une fois, le terminal trouvera une branche git à partir de là.


 Screenshot: Git Branch in Terminal 

1
IFTEKHAR I ASIF
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]$(parse_git_branch)\n\$ '
0
xyz

Voici une version simple et propre que j'utilise: link

 enter image description here 

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

ajoutez le code suivant à la fin de votre ~/.bashrc 

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
0
Ali Alp

Si vous utilisez le fish Shell son assez simple ... le poisson est un shell interactif qui vient avec beaucoup de goodies Vous pouvez l'installer avec apt-get.

Sudo apt-get install fish

vous pouvez ensuite changer le paramètre Invite en utilisant

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

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

 enter image description here

Maintenant, cliquez sur le bouton Utiliser l'invite et vous êtes prêt.

0
Shasak