我目前有git配置为使用以下bash脚本显示我所在的分支(以及我的命令行以显示我所在的目录):
export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\] \[\033[33;1m\]\w\[\033[m\] (\$(git branch 2>/dev/null | grep '^*' | colrm 1 2)) \$ \n$ "
export PS2="$ "
我想知道是否有一种方法可以显示“合并”状态,这样当我合并时它也会在命令行中显示merging
(在我之后的分支之后)。我在其他地方看过这个,所以我很确定它是可能的,但不知道如何。
答案 0 :(得分:4)
您可以在this git-ps1脚本中看到更完整的状态指示器,其中包含rebase并合并。
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/rebase-apply" ]
then
if test -f "$g/rebase-apply/rebasing"
then
r="|REBASE"
elif test -f "$g/rebase-apply/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/rebase-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/rebase-merge/head-name")"
elif [ -d "$g/rebase-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/rebase-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
答案 1 :(得分:1)
正如@Zeeker建议的那样,你基本上可以有类似的东西:
PS1='$([[ -e .git/MERGE_HEAD ]] && echo "merging ")\$ '
或者
PS1="\$([[ -e .git/MERGE_HEAD ]] && echo 'merging ')\\\$ "
您可以将其与当前的PS1
合并;自定义echo merging
或使用printf
生成ANSI代码。