我在 .bash_profile 中的 PS1 中添加了 __git_ps1,现在我得到了所有非 git repos 文件夹的 (master)

我在 .bash_profile 中的 PS1 中添加了 __git_ps1,现在我得到了所有非 git repos 文件夹的 (master)

我使用的是 Mac (10.6.5)。以下是错误示例:

[m@m ~ (master)]$ cd ~/Documents
[m@m ~/Documents (master)]$ cd ~/Applications
[m@m ~/Applications (master)]$ cd ~/Library
[m@m ~/Library (master)]$ cd ~/Sites/somesite
[m@m ~/Sites/somerepo (FEATURE_SOMEFEATURE)]$

以下是我的.bash_profile的相关内容:

source ~/.git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '

我正在使用标准 git-completion 脚本 - 我只是将其复制到我的主目录。

答案1

我怀疑您已将您的主目录初始化为 Git 存储库。

你应该能够通过检查git rev-parse --git-dirin~/Documents和的输出来验证这一点~/Applications(即你意外看到的任何位置掌握在您的提示中)。结果可能会告诉您 Git 正在使用/Users/yourname/.gitGIT_DIR 作为其他目录的目录。对于您的主目录的任何(传递)子目录,只要它本身不是另一个存储库(或位于比您的主目录更近的存储库下),情况都是如此。

对于将根目录或初始化为 Git 存储库也是如此/Users(提示将获取其下不是其自己的 Git 存储库(或在另一个 Git 存储库下)的任何内容的状态)。

答案2

这是 __git_ps1 中的一个缺陷。问题是,更改目录后分支名称不会更新。即使在签出另一个分支后,PS1 仍会显示您之前签出的分支。仅出现在 OS X 上,在 Linux 上可以正常工作。

相关内容