我使用了一种由 PROMPT 调用的方法parse_git_branch
。我正在使用 zshell,但我不明白为什么它会停止工作。
该函数如下:
parse_git_branch() {
git_status="$(git status 2> /dev/null)"
pattern="^# On branch ([^[:space:]]*)"
if [[ ! ${git_status} =~ "working directory clean" ]]; then
state="*"
fi
if [[ ${git_status} =~ ${pattern} ]]; then
branch=${match[1]}
echo "(${branch}${state})"
fi
}
下面是 a 的输出git status
:
On branch master
Your branch is up-to-date with 'origin/master'.
但呼叫却parse_git_branch
没有任何回音。
什么可能已经改变?我确实刚刚安装了最新版本的 Xcode。
Git 版本:(git version 1.8.5.2 (Apple Git-48)
看起来不太熟悉)
答案1
我建议你使用https://github.com/nojhan/liquidprompt它解决了所有这些问题,并为您的终端提示提供了更多功能和视觉效果。我最近几个月一直在使用它,它非常强大。
答案2
更改此行
pattern="^# On branch ([^[:space:]]*)
到
pattern="On branch ([^[:space:]]*)"
不确定它们如何与旧的 git 一起工作,但是无论如何......
新版本可与较新的 Git 配合使用(使用树而不是目录)
parse_git_branch() {
git_status="$(git status 2> /dev/null)"
pattern="On branch ([^[:space:]]*)"
if [[ ! ${git_status} =~ "(working (tree|directory) clean)" ]]; then
state="*"
fi
if [[ ${git_status} =~ ${pattern} ]]; then
branch=${match[1]}
echo "(${branch}${state})"
fi
}