我想忽略子目录中的所有.gitignore规则,但root中的.gitignore规则除外。
例如)
我在目录结构.gitignore
中已经有/a
个文件。
.gitignore
中还有/a/b
个文件。假设/a
有a.txt
b.txt
个文件。
/a/b
有.config
个文件。 .gitignore
在.config
中定义/a/b
。
.config
中的.gitignore
将忽略 /a/b
文件。
但我真的想通过忽略子目录中.config
的规则来跟踪.gitignore
文件。
有可能吗?
提前致谢
答案 0 :(得分:106)
你的问题不是很清楚,但是如果有一些子目录需要不同的gitignore规则,你可以在该目录中创建一个新的.gitignore。
说你有:
project/.gitignore project/stuff/.gitignore
stuff /中的.gitignore将覆盖根目录中的.gitignore。
git help gitignore
或man 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]