.gitignore排除目录中的文件,但不包括某些目录

application/cache/* application/cache/folder/* application/cache/folder/onemorefolder/* 

这似乎并没有工作。 当我克隆项目,没有"application/cache"文件夹或"application/cache/folder"文件夹等…

我想如果caching文件夹中的文件没有caching,但文件夹,以便文件夹权限转移和存在。

Git不会跟踪文件夹,只有文件,所以如果你忽略文件夹中的所有内容,Git将没有任何东西可以跟踪。 您可以使用以下内容将.gitignore文件添加到每个目录( application/cacheapplication/cache/folderapplication/cache/folder/onemorefolder/ ):

 * !.gitignore 

然后,您可以添加这些目录,每个目录中只有.gitignore文件将被添加 – 但是这意味着目录将被跟踪(即在克隆时创build)。

Git不跟踪空目录。 只需在要提交的文件夹中添加一些空的占位符文件即可。

 touch application/cache/.keep git add -f application/cache/.keep 

对每个“空”文件夹也这样做。 后来你可以忽略这些文件,它们确实只是为了确保git在克隆上创build这些目录。 .gitignore的条目使其他文件不被跟踪(除非用git add -f强制)。

还有另一个可能更干净的方法来做到这一点。 而不是在你想保留的文件夹中有.gitignore文件。 你可以把它放在根.gitignore中,如下所示:

 application/cache/* application/cache/folder/* application/cache/folder/onemorefolder/* !*.gitkeep 

现在只需创build并提交空的.gitkeep文件到上面列出的目录中。 该文件夹将被跟踪这些.gitkeep文件,但没有任何内容将被跟踪。

你可以把一个.gitignore文件放在每个文件里(像mipadi说的),或者在你的根目录下创build类似的文件.gitingnore文件

 /assets/*/ /assets/*.* 

这对我来说可以

Visual Studio不喜欢被接受的答案。 我不得不在*之前添加一个新行以使其工作。

 # Ignore all files in this folder. * !.gitignore