如何让Git忽略除子目录以外的所有内容?

除了bin子目录中出现的所有文件外,我想忽略所有的文件。 我尝试添加以下到我的.gitignore

 * !bin/* 

然而,这并没有达到预期的效果:我在bin/里创build了一个新的文件,但是做git status仍然nothing to commit (working directory clean)

有什么build议么?

这将忽略根文件和根目录,然后取消忽略根bin目录:

 /* /*/ !/bin/ 

这样你可以得到所有的bin目录,包括子目录及其文件。

这里如何忽略一切目录下的某个目录下的“ MY_SUPER_DUPER_TEMPLATE_directory ”目录

结构:/ bitrix / templates / MY_SUPER_DUPER_TEMPLATE_directory

 /* !/bitrix /bitrix/* !/bitrix/templates /bitrix/templates/* !/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory *.DS_Store *.gitignore 

您必须排除到达目的地的所有路线,但必须包含目的地:

 /* !/tsp /tsp/* !/tsp/src /tsp/src/* !/tsp/src/*.h !/tsp/src/*.cpp !/tsp/src/data.txt !/.gitignore 

忽略所有,除了tsp目录,忽略所有在tsp目录,除了src目录…

你唯一的问题是bin目录本身没有被bin/*模式匹配,所以git甚至不在bin目录中查找。

有两个解决scheme是值得思考的。

.gitignore

 * !/bin/ !bin/* 

要么

.gitignore

 * !/bin/ 

bin/.gitignore

 !* 

我更喜欢第二个解决scheme,因为第一个解决scheme不会停止忽略不在bin目录下的子目录中的文件。 这在你的情况下可能并不重要。

我认为更好的方法是通过用斜杠启动模式来将每个模式锚定到顶层的git目录:

 /* !/public_html !/.gitignore 

而不是忽略所有的文件,它只会忽略顶级文件,而不是你不想忽略的目录。

尝试使用最新的GIT版本。

 * !*/ !/path/to/your/dir/** 

从官方的git文档 ,其中一个例子说:

示例排除除特定目录foo / bar以外的所有内容(请注意/ * – 不带斜杠,通配符也会排除foo / bar内的所有内容):

 $ cat .gitignore # exclude everything except directory foo/bar /* !/foo /foo/* !/foo/bar 

有关主导斜线的解释: 何时在gitignore中使用主斜线 。

这个.gitignore适合我:

 */ /* !bin/ 

试试这个晦涩的git错误。

 !bin**/** 

希望能帮助到你 :)

支持文档git错误示例

PS:在评论之前先尝试一下。