将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
$
任何想法可能会发生什么,或者我如何能够诊断/解决这个问题?
答案 0 :(得分:3)
所以我能够根据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
答案 1 :(得分:1)
我有同样的问题。运行任何git命令后,当前分支名称将消失。首先,我使用回答https://stackoverflow.com/a/43659303/8156156的提示。效果很好。
但经过调查后,我发现我不仅有这个问题,还有其他用bash。我是在https://github.com/git-for-windows/git/issues/1153#issuecomment-308110681写的。
我不知道这些问题的根源,但对我有用的解决方法(对于这两个问题)是安装32位版本的Git for Windows(Git-2.13.1-32位)。