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
现在被忽略。