我已经为我的点文件创建了一个git存储库,但是当我在我的主目录中使用git init时,它似乎也在考虑将所有子目录都作为git的一部分。我已经通过git添加远程添加了存储库。问题是,bash显示了我实际上是哪一个分支,例如,在分支文件夹中的userr用户。因此,当我转到桌面(~/ Desktop )时,它仍然被认为是一个git目录,我甚至可以在那里使用git状态。但是,我想只考虑存储库的主目录。
发布于 2014-11-28 00:50:20
(编辑:下面的第三个选项,GIT_CEILING_DIRECTORIES
,可能是最好的)
备选案文1
除非明确告诉Git在哪里找到当前存储库的gitdir,否则它必须找到的唯一方法是向上搜索。真的没有其他的选择:你告诉它,或者它向上搜索。
我最接近你想要的就是插入一个无效的gitdir引用来打破那些目录中的git。
echo "gitdir: this isn't part of any containing repository" > $notinthisone/.git
并告诉包含的存储库忽略它:
echo $notinthisone >> .gitignore
之后
$ cd $notinthisone
$ git status
fatal: Not a git repository: this isn't part of any containing repository
而来自包含存储库的git add
将跳过它-如果您试图强制它,您将得到上面的错误消息。
选项2
对于实现dotfile的另一种方法,您可以配置一个存储库来使用您想要的任何工作树。所以:
mv .git somewhere/out/of/the/way
cd !$
git config core.worktree $OLDPWD
echo '*' >> .gitignore
echo '!.*' >> .gitignore
git add .gitignore
git commit -m 'ignoring un-hidden files'
选项3
活到老,学到老。在读取Git文档时,检查所有可能隐藏的重写到.git
目录,i 遇到这种情况
GIT_CEILING_DIRECTORIES
这应该是一个以冒号分隔的绝对路径列表.如果设置好了,这是git在查找存储库目录时不应该进入的目录列表。它不会排除当前工作目录或命令行或环境中设置的GIT_DIR
。(用于排除缓慢加载的网络目录。)
因此,导出它,并在您的.bashrc
等效做同样的,例如。
export GIT_CEILING_DIRECTORIES=$HOME
而Git不会向上恢复到您的主目录中。然后在您的主目录中
echo '*' >>.gitignore
echo '!.*' >>.gitignore
而Git将永远不会向上恢复到您的主目录的回购。
https://stackoverflow.com/questions/27177248
复制相似问题