传统解决方案
关于在命令行显示git分支,我找到了网上很多文章,都类似,比如下面这篇:
《mac终端使用git命令行显示分支信息》
就是修改.bashrc
脚本添加如下代码就可以了,我之前在linux平台基本就是这么干的。
function git_branch {
branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`"
if [ "${branch}" != "" ];then
if [ "${branch}" = "(no branch)" ];then
branch="(`git rev-parse --short HEAD`...)"
fi
echo " ($branch)"
fi
}
export PS1='\u@\h \[\033[01;36m\]\W\[\033[01;32m\]$(git_branch)\[\033[00m\] \$ '
git官方解决方案
但是macOS升级到Big Sur后默认的脚本解释器从bash
改为了zsh
,上面的办法就不灵了。
google找到下面这个StackOverflow上的帖子给出了解决方案:
这算是git官方提供的解决方案:
首先下载下面这个git官方仓库的脚本到本地,比如命名为~/.git-prompt.sh
https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh
基于zsh
然后打开$HOME
下的.zshrc
,如果~/.zshrc
不存在,就先执行下面的命令创建它
touch ~/.zshrc
然后在~/.zshrc
中添加下面的代码:
GIT_PS1_SHOWUPSTREAM="auto"
GIT_PS1_SHOWCOLORHINTS="yes"
source ~/.git-prompt.sh
setopt PROMPT_SUBST
PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
保存~/.zshrc
文件后重新执行就可以看到效果了
source ~/.bashrc
基于bash
如果你的MacOS改用了bash做默认脚本解释器,基于.git-prompt.sh
的方式也是可以用的,只是要修改~/.bashrc
(注意不是~/.zshrc
哦),添加下面的代码:
GIT_PS1_SHOWUPSTREAM="auto"
GIT_PS1_SHOWCOLORHINTS="yes"
source ~/.git-prompt.sh
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
关于这部分更详细的说明参见.git-prompt.sh
脚本最前面的用法说明。
brew 提供的解决方案
第三方软件vcprompt
提供了Git (and Hg, Bazaar and SVN)等版本控制工具的命令行提示支持
可以通过homebrew安装,如下:
brew install vcprompt
这个倒是非常简单,但因为我已经用前面的方案实现了需要,这个方案我没有试过
参考资料
《Show git branch and status in Mac Bash》
https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh