我想忽略子目录中的所有.gitignore规则,但根目录中的.gitignore规则除外。
例如:我已经在目录结构/a
中有.gitignore
文件。
并且在/a/b
中也有.gitignore
文件。假设/a
具有a.txt
和b.txt
文件。
/a/b
具有.config
文件。.gitignore
在/a/b
中定义.config
。
/a/b
中的.gitignore
将忽略.config
文件。
但是我真的想通过忽略.gitignore
在子目录中的规则来跟踪.config
文件。
有可能吗?
4条答案
按热度按时间t5zmwmid1#
您的问题不太清楚,但如果有一些子目录需要不同的gitignore规则,您只需在该目录中创建一个新的.gitignore即可。
假设您拥有:
Stuff/中的.gitignore将覆盖根目录中的.gitignore。
git help gitignore
或man gitignore
有更多关于可能性的信息。juud5qan2#
假设您想要在存储库中包含
node_modules
,但是某个模块本身就有.gitignore
。您可以通过将以下内容添加到根.gitignore
文件来取消这些规则:fnvucqvd3#
这里问题的关键是父目录被排除在外。来自
$ man gitignore
:如果文件的父目录被排除,则无法重新包括该文件。出于性能原因,Git不会列出排除的目录,因此包含文件上的任何模式都不起作用,无论它们是在哪里定义的。
以下是我是如何让它发挥作用的。已给予:
/.gitignore
:则
/b/foo
将显示为包含文件,而/a
和/c
中的所有内容将被排除。权衡之处在于,您必须为要包含文件的任何目录的所有父目录添加一个否定。w1e3prcc4#
据我所知,没有办法做这件事。由于本地.gitignore将覆盖根目录GINIGNORE,因此我的变通方法是手动添加。