有没有可能忽略子目录中的.gitignore规则?
我想忽略除了根目录中的.gitignore规则以外的子目录中的所有.gitignore规则。
例如)我已经在目录结构/a
.gitignore
文件。
在/a/b
也有.gitignore
文件。 假设/a
有/a
b.txt
文件。
/a/b
有.config
文件。 .gitignore
在/a/b
定义了.config
。
.config
文件将被/a/b
.gitignore
忽略。
但我真的想通过忽略子目录中的.gitignore
规则来跟踪.config
文件。
可能吗?
提前致谢
你的问题不太清楚,但是如果有一些你想要不同的gitignore规则的子目录,你可以在那个目录中创build一个新的.gitignore。
假设你有:
项目/的.gitignore 项目/材料/的.gitignore
.gitignore中的stuff /将覆盖根目录中的.gitignore。
git help gitignore
或man gitignore
有关于什么是可能的更多的信息。
假设你想要在你的仓库中包含node_modules
,但是某个模块下面有自己的.gitignore
。 您可以通过将以下内容添加到根.gitignore
文件来取消规则:
# Make sure to include everything in node_modules. !node_modules/**
这里问题的关键是排除父目录。 从$ man gitignore
:
如果排除该文件的父目录,则不可能重新包含文件。 由于性能的原因,Git没有列出排除的目录,所以包含文件的任何模式都不起作用,不pipe它们在哪里定义。
以下是我如何工作。 鉴于:
/a/... /b/foo /c/...
/.gitignore
:
/* !/b
那么/b/foo
将显示为包含文件,而/a
和/c
所有内容都将被排除。 权衡是你必须添加一个否定的任何目录,你想包括文件的所有父母。
据我所知,没有办法做到这一点。 由于本地.gitignore将覆盖根ginignore我的解决方法是手动添加。
git add --force [ your file and folder]