我为我的点文件创建了一个git存储库,但是当我在我的主目录中使用git init时,似乎它也将所有子目录都视为git的一部分。 我已经通过git add remote添加了存储库。 问题是我的bash显示我实际上在哪个分支,例如,用户在分支机构的文件夹中的用户。因此,当我进入我的桌面(〜/桌面)时,它仍然被认为是一个git目录,我甚至可以在那里使用git状态。但是,我想git只考虑存储库的主目录。
答案 0 :(得分:1)
(编辑:下面的第三个选项,GIT_CEILING_DIRECTORIES
,可能是最好的)
除非您明确告诉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
将跳过它 - 如果您尝试强制它,您将收到上述错误消息。
有关实现dotfile repo的替代方法,您可以配置存储库以使用您想要的任何工作树。所以:
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'
生活和学习,在阅读git文档检查.git
目录中所有可能的隐藏覆盖时,我遇到了这个:
GIT_CEILING_DIRECTORIES
This should be a colon-separated list of absolute paths. If set, it is a list of directories that git should not chdir up into while looking for a repository directory. It will not exclude the current working directory or a GIT_DIR set on the command line or in the environment. (Useful for excluding slow-loading network directories.)
因此,导出并在.bashrc
等效内容中执行相同操作,例如
export GIT_CEILING_DIRECTORIES=$HOME
并且git将不向上递送到您的主目录。然后在您的主目录
echo '*' >>.gitignore
echo '!.*' >>.gitignore
并且git永远不会向上递送到您的主目录' s repo
答案 1 :(得分:0)
我想我找到了这个帖子的解决方案:Git ignore sub folders @mgold的回答。他建议添加
*/*
到gitignore。如果你使用基于linux的系统,你可能需要改变正则表达式,它在Windows中对我有用。我希望这会有所帮助。