我正在使用这个:
$(__git_ps1 '(%s)')
它可以工作,但是当我更改目录或签出新分支时它不会更新。我也有这个别名:
alias reload='. ~/.bash_profile'
示例运行:
user@machine:~/dev/rails$cd git_folder/
user@machine:~/dev/rails/git_folder$reload
user@machine:~/dev/rails/git_folder(test)$git checkout master
Switched to branch 'master'
user@machine:~/dev/rails/git_folder(test)$reload
user@machine:~/dev/rails/git_folder(master)$
如您所见,它已正确设置,但前提是我重新加载 bash_profile。我在这上面浪费了太多时间。我在雪豹上使用 bash。请帮忙!
编辑:你可以在 github 上看到我的点文件和设置 PS1 的文件这里
答案1
好的,问题解决了。
我在做:
export PS1="$(__git_ps1 '(%s)')"
我需要做:
export PS1="\$(__git_ps1 '(%s)')"
您需要转义美元符号,否则它只会运行一次并替换。
答案2
您可能需要使用$PROMPT_COMMAND
答案3
请注意,最新的 git 将 __git_ps1 移出 bash_completion,因此您需要单独获取它。请参阅https://superuser.com/a/477749/66255。