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

时间:2010-09-15 16:07:16

标签: git

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

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

.gitignore中还有/a/b个文件。假设/aa.txt b.txt个文件。

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

.config中的.gitignore将忽略

/a/b文件。

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

有可能吗?

提前致谢

4 个答案:

答案 0 :(得分:106)

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

说你有:

project/.gitignore
project/stuff/.gitignore

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

git help gitignoreman gitignore提供了有关可行内容的更多信息。

答案 1 :(得分:28)

假设您希望在您的存储库中包含node_modules,但该行的某个模块具有自己的.gitignore。您可以通过将以下内容添加到根.gitignore文件来否定规则:

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

答案 2 :(得分:7)

此处问题的关键是排除父目录。来自// matrix was allocated to x and y // reallocate it to newx, newy for (i = newx; i < x; i++) { /* free unneeded rows */ free(matrix[i]); } matrix = realloc(matrix, sizeof(*matrix) * newx); for (i = x; i < newx; i++) { /* initialize the new row pointers */ matrix[i] = NULL; } for (i = 0; i < newx; i++) { matrix[i] = realloc(matrix[i], sizeof(*matrix[i]) * newy); for (int j = y; j < newy; j++) matrix[i][j] = 0; }

  

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

以下是我如何让它发挥作用。给出:

$ man gitignore

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

/.gitignore

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

答案 3 :(得分:6)

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

git add --force [ your file and folder]