让 Bash Prompt 显示 Git Branch

Git Branch Name

看到他人的 terminal 中显示出 git branch 名,查阅了一些资料,需要 __git_ps1,下面记录下如何安装使用。

OS X

需要安装 Command Line Tools,在 10.9 的 OS X 中 Xcode 已经默认自带了 Command Line Tools。之前的版本需要 xcode-select --install 去安装。

随后,在 ~/.bash_profile

if [ -f $(xcode-select -p)/usr/share/git-core/git-completion.bash ]; then
    . $(xcode-select -p)/usr/share/git-core/git-completion.bash
    . $(xcode-select -p)/usr/share/git-core/git-prompt.sh
fi

最后,~/.bashrc 中去组织你的 PS1,在适当的地方添加上 $(__git_ps1),譬如我的

if [ `id -u` -ne 500 ]; then
    export GIT_PS1_SHOWDIRTYSTATE=1
    export PS1='\[\e[1;36m\]→\[\e[m\] \[\e[0;32m\]\w\[\e[0;35m\]$(__git_ps1)\[\e[1;32m\] \$\[\e[m\] '
fi

顺便,每次登陆 terminal,都提示 “Last login: xxxxx”,又不是服务器,匿了它

$ touch .hushlogin

Linux

首先当然是通过包管理器来安装 git,一些发行版打包 git 时可能会将一些文件精简掉,譬如俺的 Gentoo 就是如此。

此时可以如此

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

随后在 ~/.bash_profile 中 source

[[ -f ~/.git-prompt.sh ]] && . ~/.git-prompt.sh

最后 ~/.bashrc 中编辑你的 PS1,在其中某处添加 $(__git_ps1) 即可。

screen

在一些发行版中的 screen 下可能会提示 -bash: __git_ps1: command not found

这是因为在 screen 下, $(__git_ps1) 需要 bash 运行,可以在 ~/.screenrc 中配置如下一行 shell -bash 即可。