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

时间:2011-09-05 05:21:12

标签: git bash rebase

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

22:07 (seesaw|REBASE-i) infwb $git branch
* master
  wkg

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

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

如您所见,$(__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 \$"

----------------

附录

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

1 个答案:

答案 0 :(得分: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")"
...

因此,只要.git/rebase-merge存在,您将获得“错误”分支,即使您已移至另一个分支。

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