将 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)
有什么想法可能会发生什么,或者我如何诊断/解决这个问题?