Git忽略子文件夹

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

.gitignore“bin /”忽略“debugging”和“释放”文件夹,但也包含在“bin”文件夹中的任何DLL。

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

有什么build议么?

你尝试过通配符吗?

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

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

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

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

 Debug/ Release/ 

这应该立即更新,所以当你做git状态时,它是可见的。 确保这些目录还没有添加到git,因为这将覆盖忽略。

问题不在于忽略所有子目录,而是我无法在任何地方find答案,所以我会发布它: */*

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

除了在你的.gitignore文件中放入正确的条目之外,如果你试图忽略已经添加到回购的东西,你必须在添加目录到你的目录之前,执行git rm -r /path/to/dir 。 gitignore文件。 否则,git将忽略的唯一的东西就是你的忽略指令。

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

 # 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/ !wordpress/*/wp-content/themes/* !wordpress/*/wp-content/themes/*/* !wordpress/*/wp-content/themes/*/*/* !wordpress/*/wp-content/themes/*/*/*/* !wordpress/*/wp-content/themes/*/*/*/*/* 

请注意,您必须明确允许您要包含的每个级别的内容。 因此,如果我在主题下有深层次的子目录5,我仍然需要把它拼出来。

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

这些是有用的话题:

  • .gitignore中的否定模式如何工作?
  • gitignore排除规则如何实际工作?

我也试过了

 * */* **/** 

**/wp-content/themes/**

/wp-content/themes/**/*

没有任何一个对我有用, 很多线索和错误!

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

 bin/*/* 

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

 bin/Debug/* bin/Release/* 

NB。 如果bin目录不在你的项目的根目录下(和.gitignore文件一起),那么就不用。 bin/*/*你可能需要path/to/bin/*/*

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

 **/ 

这从git的1.8.2版本起作用。

我需要提交对目录dirname/进行的更改。 现在通过将dirname/添加到.gitignore ,目录dirname现在被忽略。