我正在使用嵌套git存储库的linux系统。我的文件/目录结构如下:
~/
.git/
.gitignore
file1
project/
.git/
file2
file3
在我的homedir中,我为我的linux配置文件创建了一个repo。忽略文件(〜/ .gitignore)仅包含'*'(排除所有内容)。我添加了'git add -f file'文件。在嵌套的repo(项目)中,我发现尽管在提交时更新了正确的'(〜/ project /)。git'目录,但所有内容都被排除在外。我用以下命令检查了这个:
> cd ~/project
> git add file2
The following paths are ignored by one of your .gitignore files:
file2
Use -f if you really want to add them.
fatal: no files added
> git check-ignore -v file2
~/.gitignore:1:* file2
命令check-ignore从版本1.8.2开始提供,并受stackoverflow问题的推动:which gitignore rule is ignoring my file。
我的问题是,是否有办法改变关于忽略文件的行为git,只处理遇到的忽略文件,直到找到git提交的repo,例如,停止处理目录结构中比第一个更高的忽略文件'找到.git'文件夹(在本例中为〜/ project / .git)。
谢谢!
答案 0 :(得分:2)
编辑:修改父资料库的忽略文件以使用/*
代替*
,实际上似乎做了你想做的事。
话虽如此,该帖的其余部分仍然适用:
我不建议嵌套Git存储库,除非它们是相关的,在这种情况下使用submodules
或许多替代方案是个好主意。
为了对我的dotfiles进行版本控制,我将我想要版本的所有文件放入一个专用目录,例如~/dotfiles
,可以安全地进行版本控制。然后我将~/dotfiles
中的文件符号链接到我的主目录中。这有一个额外的好处,我可以通过不链接它来“禁用”我的某些机器上的单个文件。
答案 1 :(得分:2)
似乎我在我的bash配置文件中的某处添加了“git config --global core.excludesfile'~ / .gitignore'”。从bash配置文件和'〜/ .gitconfig'中删除它后解决了这个问题。我得出结论,忽略文件不会被继承! :)