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..
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, construirePS1
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) $ '
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.
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
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
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\] $ "
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) $
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
cliquez maintenant sur le bouton use prompt et vous êtes positionné.
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$ '
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é. :)
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)] $