【发布时间】:2017-07-31 23:35:55
【问题描述】:
将 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$
这很好启动,例如我的提示开始像
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
$
有什么想法会发生什么,或者我该如何诊断/解决这个问题?
【问题讨论】:
-
我有相同的
PS1值并且没有观察到这种行为。在您运行 git 命令之后但在重新启动 shell 之前(即,当它没有显示分支名称时),您是否验证了PS1值仍然与您预期的一样? (它不应该改变,但也许设置了一个别名,它正在做不应该做的事情;是否有人可以访问您的个人资料,这可能是在开个小玩笑?) -
我做到了,是的。运行命令前后的值相同。我可能应该提到的另一个事实是,它之前运行良好,但在从版本 2.8.0.windows.1 升级到 2.12.0.windows.1 后停止运行。
-
刚刚对我的一个系统进行了测试升级到 2.12.0.windows.1(64 位),但仍然无法重现该问题。版本可能是一个因素,但肯定还有更多。
-
我并不感到惊讶 - 如果每个人都看到它,那么 Google 搜索就会有结果。我想作为一个 Bash 菜鸟,我想知道是否有人知道一种方法可以对其进行一些诊断以深入挖掘。
-
回滚到以前的 Git 版本,一切正常。我真的不需要升级,所以我不会再调查了。