Git忽略子文件夹

时间:2010-03-30 13:37:25

标签: git directory ignore gitignore

我的.Net解决方案中有很多项目。我想排除所有“bin / Debug”和“bin / Release”文件夹(及其内容),但仍然包含“bin”文件夹本身以及其中包含的任何dll。

.gitignore与“bin /”忽略“Debug”和“Release”文件夹,但也包含“bin”文件夹中包含的任何dll。

.gitignore文件中的“bin / Debug”或“bin / Release”不排除目录,除非我完全将忽略模式限定为“Solution / Project / bin / Debug” - 我不想这样做我需要在我的解决方案中为每个项目包含这个完整模式,并为添加的任何新项目添加它。

有什么建议吗?

11 个答案:

答案 0 :(得分:458)

你试过通配符吗?

Solution/*/bin/Debug
Solution/*/bin/Release

使用git 1.8.2版,您还可以使用**通配符匹配任何级别的子目录:

**/bin/Debug/
**/bin/Release/

答案 1 :(得分:95)

您可以在顶层使用.gitignore忽略项目中具有相同名称的所有目录。例如:

Debug/
Release/

这应立即更新,以便在您执行git状态时可见。确保这些目录尚未添加到git中,因为这将覆盖忽略。

答案 2 :(得分:47)

问题不是要求忽略所有子目录,但我无法在任何地方找到答案,所以我会发布它:*/*

答案 3 :(得分:33)

以上所有答案都是有效的,但我提到的一点是,一旦你将该目录中的文件添加到repo中,就不能忽略包含该文件的目录/子目录(git将忽略那个指令)。您必须先从repo中删除目标目录中的所有文件,然后才能忽略该文件夹。

答案 4 :(得分:22)

除了在.gitignore文件中输入正确的条目之外,如果您试图忽略已添加到repo中的内容,则必须执行git rm -r /path/to/dir并在将dir添加到您的目录之前提交。 gitignore文件。否则git将忽略的唯一事情就是你的ignore指令。

答案 5 :(得分:5)

忽略所有子文件夹,同时继续跟踪/bin目录中的文件的一般方法是将以下行添加到项目的.gitignore文件中:

bin/*/*

如果您只想忽略特定的命名子文件夹,可以执行以下操作:

bin/Debug/*
bin/Release/*

NB。如果bin目录不在项目的根目录中(与.gitignore文件一起),则代替例如。 bin/*/*您可能需要path/to/bin/*/*

答案 6 :(得分:5)

要忽略所有子目录,只需使用:

**/

这适用于git版本1.8.2。

答案 7 :(得分:4)

要排除内容和子目录:

**/bin/*

要排除所有子目录但是获取内容,请添加“/”:

**/bin/*/

答案 8 :(得分:3)

忽略 .gitignore 文件中存储库根目录的所有子文件夹的最简单形式是:

*/

如果你想忽略另一个子文件夹的所有子文件夹:

subfolder/*/

如果您已经提交了需要忽略的项目,则需要在它们被忽略之前将它们从存储库中删除。

要删除存储库根目录的所有子文件夹:

git rm -r --cached */*

要删除另一个子文件夹的所有子文件夹:

git rm -r --cached subfolder/*/*

答案 9 :(得分:1)

似乎经过了这么多年,该页面仍显示在Google搜索的顶部...

现代版本的Git支持在单个仓库中嵌套.gitignore文件。只需将.gitignore文件放在要忽略的子目录中。使用单个星号来匹配该目录中的所有内容:

echo "*" > /path/to/bin/Debug/.gitignore
echo "*" > /path/to/bin/Release/.gitignore

如果您以前进行过提交,请记住删除以前跟踪的文件:

git rm -rf /path/to/bin/Debug
git rm -rf /path/to/bin/Release

您可以通过执行git status向您显示从跟踪中删除的所有文件来进行确认。

答案 10 :(得分:0)

要忽略子文件夹但不能忽略主文件夹,我只能通过在主文件夹中放置一个伪readme.txt使其在Visual Studio Code中起作用。然后,/ * /才签入主文件夹(没有子文件夹)。