在我的bash提示符中,$(__ git_ps1)告诉我出了什么问题,但是什么?

Gre*_*ams 7 git bash rebase

我已经攻击了我的bash提示符(理论上)告诉我我目前正在使用什么git分支.但是输出表明出现了问题:

22:07 (seesaw|REBASE-i) infwb $git branch
* master
  wkg
Run Code Online (Sandbox Code Playgroud)

这是我的.bash_profile文件中的相关代码(我将在这个问题的最后添加一个更大的部分):

PS1="$GRAY\$(date +%H:%M)\$(__git_ps1) $GREEN\W$YELLOW \$"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,$(__git_ps1)回报率(seesaw|REBASE-i),即使我不再有一个跷跷板分支!(我确实有一个,它与我在github上的远程跷跷板分支有一个rebase问题.我想,我解决了这个问题,并git branch -r seesaw成功删除了本地副本.)

我很确定这(seesaw|REBASE-i)告诉我有什么不对劲,但我不知道它是什么.

感谢您提出的任何建议.(大块的.bash_profile如下)

-------from .bash_profile ---------

## ----- from http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/
# Set git autocompletion and PS1 integration
if [ -f /usr/local/git/contrib/completion/git-completion.bash ]; then
  . /usr/local/git/contrib/completion/git-completion.bash
fi

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi
## ----- end 

GRAY="\[\033[1;30m\]"
YELLOW="\[\033[1;33m\]"
GREEN="\[\033[0;32m\]"

PS1="$GRAY\$(date +%H:%M)\$(__git_ps1) $GREEN\W$YELLOW \$"

----------------
Run Code Online (Sandbox Code Playgroud)

附录

@cdhowie和@manojlds,我对你的git知识印象深刻!

git rebase --abort导致信息更改为(seesaw).不幸的是,我无法在硬盘上找到rebase-merge(或.git)任何地方.我在Mac上,它为许多FOSS工具做了奇怪的事情.(我确实在/ usr/local/git找到了git.)/ Library/Application Support或〜// Library/Application Support都没有.

(还是晚一点)

事实证明一切都很好.不知何故git rebase --abort导致跷跷板分支重新出现(我没想到!),命令让我把跷跷板当作我当前的分支.从那里,我知道该怎么做.

man*_*lds 4

根据 @cdhowie 的评论,我怀疑以__git_ps1不同的方式处理 git rebase 场景。所以我查看了源代码并发现了以下几行:

...
if [ -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")"
...
Run Code Online (Sandbox Code Playgroud)

因此,只要.git/rebase-merge存在,即使您已经移动到另一个分支,您也会得到“错误”的分支。

git rebase --abort会修复它。或者删除.git/rebase-merge