Git Bash 提示 - Git 命令后当前分支名称停止显示

Phi*_*hil 6 git git-bash

将 GitBash 与 Git for Windows 结合使用,我的 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$
Run Code Online (Sandbox Code Playgroud)

这可以很好地启动,例如我的提示符开始像

myuser@mypc MINGW64 /c/git/myrepo (master)
$
Run Code Online (Sandbox Code Playgroud)

但是,在我运行任何 git 命令后,当前分支部分将被忽略,直到我重新启动 shell。

myuser@mypc MINGW64 /c/git/myrepo (master)
$ git branch
* master
  myOtherBranch

myuser@mypc MINGW64 /c/git/myrepo
$
Run Code Online (Sandbox Code Playgroud)

但如果我运行 __git_ps1 它仍然告诉我正确的值:

myuser@mypc MINGW64 /c/git/myrepo
$ echo `__git_ps1`
(master)

myuser@mypc MINGW64 /c/git/myrepo
$
Run Code Online (Sandbox Code Playgroud)

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

its*_*ash 5

因此,我能够根据问题以及此问题中已有的信息使事情再次正常运行。我将以下内容添加到我的.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
Run Code Online (Sandbox Code Playgroud)