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

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

例如)  我已经在目录结构.config中拥有.gitignore文件。

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

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

.gitignore中的.gitignore文件将被.gitignore忽略。

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

可能吗?

提前致谢

jeon asked 2019-10-09T17:42:27Z
4个解决方案
104 votes

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

说您有:

project/.gitignore
project/stuff/.gitignore

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

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

signine answered 2019-10-09T17:43:00Z
28 votes

假设您想在存储库中包含node_modules,但是某些模块本身具有.gitignore。 您可以通过在根.gitignore文件中添加以下内容来否定规则:

# Make sure to include everything in node_modules.
!node_modules/**
Nick Zalutskiy answered 2019-10-09T17:43:27Z
7 votes

问题的关键在于排除了父目录。 从/b/foo

如果排除该文件的父目录,则无法重新包含该文件。 由于性能原因,Git不会列出被排除的目录,因此包含在文件上的任何模式(无论它们在何处定义)均无效。

这就是我如何使其工作的方法。 鉴于:

/a/...
/b/foo
/c/...

/b/foo

/*
!/b

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

Ross Patterson answered 2019-10-09T17:44:20Z
6 votes

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

git add --force [ your file and folder]
helloiloveit answered 2019-10-09T17:44:47Z
translate from https://stackoverflow.com:/questions/3719574/is-it-possible-to-ignore-gitignore-rules-in-subdirectory