在Bash命令提示符处添加git分支

我试图添加我目前正在工作(签出)在bash提示没有成功的git分支..( 同时保持我的当前path显示活动目录/文件完好无损)我有一个.bashrc文件在我家,但我也看到很多人提到.profile文件..

注意这种提示现在由contrib / completion / git-prompt.sh及其__git_ps1_branch_namevariablespipe理。

  • 将这个文件复制到某个地方(例如~/.git-prompt.sh )。
  • .bashrc/.zshrc下行添加到.bashrc/.zshrc
  source ~/.git-prompt.sh 
  • 改变你的PS1调用__git_ps1作为命令replace:
  Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' 

但请注意,只有git 1.9.3(2014年5月) 或更高版本才能安全地显示该分支名称(!)

见Richard Hansen( richardhansen )的 提交8976500 :

bash和zsh都将PS1的值作为参数扩展命令replace和算术扩展。

在两参数或三参数模式下运行时,不要在PS1包含原始的非转义分支名称,而要构buildPS1以引用包含分支名称的variables。

因为这些shell不会recursion地展开,所以可以避免由特制的分支名称(如

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

狡猾的头脑会命名这样一个分支? ;)( 在xkcd旁边的一个妈妈旁边 )


在评论中 still_dreaming_1报道:

这似乎工作得很好,如果你想用xterm (在我的.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)\$ ' 

一切都是不同的颜色,包括分支。

在Linux Mint 17.3中,Cinnamon 64位:

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

按照以下步骤操作:(Linux)

编辑文件~/.bashrc ,在其末尾input以下行(如果是Mac,文件将是~/.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\] $ " 

现在,启动新的terminal窗口,并尝试进入任何git回购。 显示当前分支,并显示提示。

4更多信息 – MAC / Linux

1-如果你没有bash完成 …: sudo apt-get install bash-completion

2-编辑您的.bashrc文件并检查(或添加):

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

3- …在提示行之前: export PS1='$(__git_ps1) \w\$ '
__git_ps1会显示你的git分支)

4-做source .bashrc

编辑:

更多阅读: 不要重新发明轮子

下面是我如何configuration提示来显示Git状态:

获取git-prompt脚本:

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

并定制你的提示在你的.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" 

如果你想了解更多,你可以在这里得到所有的点文件: https : //github.com/jamming/dotfiles

对于Mac,这工作得很好: 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\] $ " 

如果你用这个鱼壳,它很简单。 鱼是一个交互式的shell,有很多好东西。 你可以使用apt-get来安装它。

 sudo apt-get install fish 

然后可以使用更改提示设置

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

现在转到http://localhost:8001/打开提示标签并select经典的+ git选项

在这里输入图像说明

现在点击使用提示button,即可设置。

我已经尝试了一个在Python文件夹中的小脚本….“gitprompt”文件

 #!/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 "-" 

使其可执行和东西

然后相应地调整bash提示,如下所示:

 \u:\w--[$(gitprompt)] \$