在Bash命令提示符处添加git分支
我试图添加我目前正在工作(签出)在bash提示没有成功的git分支..( 同时保持我的当前path显示活动目录/文件完好无损)我有一个.bashrc文件在我家,但我也看到很多人提到.profile文件..
注意这种提示现在由contrib / completion / git-prompt.sh
及其__git_ps1_branch_name
variablespipe理。
- 将这个文件复制到某个地方(例如
~/.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\]:\[\033[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)] \$