我已经攻击了我的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导致跷跷板分支重新出现(我没想到!),命令让我把跷跷板当作我当前的分支.从那里,我知道该怎么做.
根据 @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