关于git:是否可以忽略子目录中的.gitignore规则?


is it possible to ignore .gitignore rules in subdirectory?

除了根目录中的.gitignore规则外,我想忽略子目录中的所有.gitignore规则。

例如)
我已经在目录结构/a中具有.gitignore文件。

并且在/a/b中也具有.gitignore文件。假设/aa.txt b.txt个文件。

/a/b具有.config文件。 .gitignore/a/b中定义.config

.config文件将被/a/b中的.gitignore忽略。

但是我真的想通过忽略子目录中.gitignore的规则来跟踪.config文件。

有可能吗?

预先感谢


您的问题不太清楚,但是如果有一些子目录需要不同的gitignore规则,则可以在该目录中创建一个新的.gitignore。

说您有:

1
2
project/.gitignore
project/stuff/.gitignore

stuff /中的.gitignore将覆盖根目录中的.gitignore。

git help gitignoreman gitignore具有更多关于可能的信息。


让我们说您想在存储库中包括node_modules,但是下面的某些模块具有自己的.gitignore。您可以通过将以下内容添加到根.gitignore文件中来取消规则:

1
2
# Make sure to include everything in node_modules.
!node_modules/**


此问题的关键是排除了父目录。来自$ man gitignore

It is not possible to re-include a file if a parent directory of that file is excluded. Git doesna€?t list excluded directories for performance reasons, so any patterns on contained files have no effect, no matter where they are defined.

这就是我让它起作用的方式。给出:

1
2
3
/a/...
/b/foo
/c/...

/.gitignore

1
2
/*
!/b

然后/b/foo将显示为包含的文件,而/a/c中的所有内容都将被排除。需要权衡的是,您必须为要在其中包含文件的任何目录的所有父项添加一个否定项。


据我所知没有办法。由于本地.gitignore将覆盖根ginignore
我的解决方法是手动添加。

1
git add --force [ your file and folder]