将gitbash与git for windows一起使用时,my ps1变量设置为显示当前分支,如下所示:

$ echo $PS1
\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$

这可以很好地启动,例如,我的提示以如下方式启动
myuser@mypc MINGW64 /c/git/myrepo (master)
$

但是,在我运行任何git命令之后,在重新启动shell之前,当前分支部分将被忽略。
myuser@mypc MINGW64 /c/git/myrepo (master)
$ git branch
* master
  myOtherBranch

myuser@mypc MINGW64 /c/git/myrepo
$

但如果运行git ps1,它仍然会告诉我正确的值:
myuser@mypc MINGW64 /c/git/myrepo
$ echo `__git_ps1`
(master)

myuser@mypc MINGW64 /c/git/myrepo
$

有什么想法会发生什么,或者我如何去诊断/解决这个问题?

最佳答案

所以我能够根据this和这个问题中已经存在的信息,让事情重新运转起来。我将下面的内容添加到了.bashrc文件中,一切又恢复了正常。我不确定问题的根本原因是什么,但这似乎是一个很好的解决办法。

update_PS1 () {
  PS1="\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ "
}
shopt -u promptvars
PROMPT_COMMAND=update_PS1

08-28 02:19