我的主目录是一个 git 存储库。但是为了让我可以自由地创建/删除/测试代码而不弄乱git status
,我的 .gitignore 有一个明确的忽略所有:
[svenglar@my_box ~]$ cat ~/.gitignore
## Ignore everything by default.
## Use 'git add --force <file>' to add a file/dir.
*
我假设这意味着当我创建一个新目录时,它不会包含在存储库中。但情况似乎并非如此:
[svenglar@my_box ~]$ git rev-parse --is-inside-work-tree
true
[svenglar@my_box ~]$ mkdir test
[svenglar@my_box ~]$ cd test
[svenglar@my_box ~/test]$ git rev-parse --is-inside-work-tree
true
[svenglar@my_box ~/test]$ git status
# On branch master
nothing to commit, working directory clean
我看到这git status
很干净,但git rev-parse --is-inside-work-tree
认为新目录是存储库的一部分。
所以我的问题是,如何配置 git 以不将新目录视为工作树的一部分?
--更新--
我首先问这个的原因是因为我在使用 git repos 时使用 .git-prompt.sh 来修改 BASH 的提示。我的主文件夹下有多个项目(文件夹)是 git repos。当我 cd 到其中一个目录时,我想查看哪个分支处于活动状态,等等...
但是当我在“home”存储库中时,我不需要/不想使用 .git-prompt.sh,因为我不认为这是一个“work”目录。
我的解决方法是在最后一个“printf”命令之前使用以下检查修改 .git-prompt.sh:
# Only modify $PS1 if we are not in the home repository.
[[ $(git rev-parse --show-toplevel) =~ "${HOME}/" ]] && printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p"
我以前只检查是否pwd
包含${HOME}/
(最后一个正斜杠表示我在子目录中)。
感谢您的所有回答。他们帮助我理解了为什么我错了。