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

.gitignore与"bin/"忽略"调试"和"释放"文件夹,但也任何dll包含在"bin"文件夹。

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

有什么建议吗?


你试过通配符吗?

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

在git的1.8.2版本中,你也可以使用**通配符来匹配任何级别的子目录:

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

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

Debug/
Release/

这应该立即更新,以便在执行git status时可见。确保这些目录没有添加到git中,因为这会覆盖忽略。


这个问题并不是问是否忽略所有子目录,但我在任何地方都找不到答案,所以我将它发布为:*/*。


上面所有的答案都是有效的,但我认为没有提到的是,一旦你从该目录添加一个文件到repo,你就不能忽略包含该文件的目录/子目录(git会忽略该指令)。

忽略已添加的文件运行

$ git rm -r --cached .

否则,您必须首先从回购的目标目录中删除所有文件-然后您可以忽略该文件夹。


我让这个在我的机器上工作的唯一方法是这样做:

# Ignore all directories, and all sub-directories, and it's contents:
*/*

#Now ignore all files in the current directory 
#(This fails to ignore files without a ".", for example 
#'file.txt' works, but 
#'file' doesn't):
/*.*

#Only Include these specific directories and subdirectories:
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/

请注意,您必须显式地允许您想要包含的每个级别的内容。所以如果我在主题下面有子目录5,我仍然需要拼写出来。

这是@Yarin的评论:https://stackoverflow.com/a/5250314/1696153

这些都是有用的话题:

负模式在。gitignore中是如何工作的? gitignore排除规则实际上是如何工作的?

我也试过

*
*/*
**/**

和* * / wp-content /主题/ * *

或/ wp-content /主题/ * * / *

这些对我也没用。大量的尝试和错误!


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

bin/*/*

如果你只想忽略特定的命名子文件夹,你可以这样做:

bin/Debug/*
bin/Release/*

nb。如果bin目录不在项目的根目录中(与.gitignore文件一起),则代替eg. bin目录。Bin /*/*可能需要路径/到/ Bin /*/*


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


要忽略所有子目录,您可以简单地使用:

**/

从git的1.8.2版本开始。


要排除内容和子目录:

**/bin/*

要排除所有子目录,只保留内容,添加"/":

**/bin/*/

为了忽略子文件夹而不是主文件夹,我只能通过在主文件夹中放置一个虚拟的readme.txt来在Visual Studio Code中工作。只有在主文件夹中/*/才被选中(没有子文件夹)。


似乎这么多年后,这个页面仍然出现在谷歌搜索的顶部…

现代版本的Git支持在单个repo中嵌套.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来确认它,以显示从跟踪中删除的所有文件。


忽略repo根目录下的所有子文件夹,但包含该文件夹根目录下的文件的最简单的形式是将其添加到.gitignore文件中:

*/

如果你想忽略另一个子文件夹的所有子文件夹(仍然包括那里的文件):

subfolder/*/

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

删除repo目录根目录下的所有子文件夹:

git rm -r --cached */*

删除其他子文件夹下的所有子文件夹。

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