Git忽略子文件夹

时间:2013-12-27 16:44:44

标签: git gitignore

只是尝试git忽略我的项目中的子文件夹。它看起来像这样:

platforms/android/fileshere.txt

现在我想忽略平台/ android中的所有文件,但我想保留文件夹结构。

似乎无法找到如何做到这一点。

我试过了: platforms/android/*

但它也忽略了这些文件夹。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

基本问题是git从根本上总是“忽略文件夹”。 git旨在仅跟踪文件内容。如果该内容恰好位于文件夹结构中,那么该文件夹结构随之存储 - 但是git不可能存储没有文件的目录结构。

git社区已经适应这个问题的常见方法是在你要保留的每个文件夹中添加一个名为“.gitkeep”的空文件。然后告诉git跟踪该文件。例如,当您创建一个新的rails项目时,您会看到有“.gitkeep”文件 - 这表明了人们如何解决这个问题。

如果您明确告诉git跟踪.gitkeep文件,我认为您不需要在.gitignore文件中将它们作为例外。保持原样,我认为git将继续忽略所有文件,但仍然跟踪.gitkeep文件,因此也跟踪目录结构。所以你的.gitignore(我想)可以说platforms/android/*

编辑:This article由git维护者编写,解决了为什么决定存储“内容,而不是文件”的原因。事实上,first article he links to是由Linus自己(git的创建者)而且非常有助于某些人理解导致这种非常奇怪的症状无法直接跟踪文件夹的最终原因。

答案 1 :(得分:1)

通常的做法是在您想要维护的每个文件夹中维护一个.gitkeep文件。因此,您的.gitignore文件可能如下所示:

platforms/android
!platforms/android/.gitkeep

答案 2 :(得分:1)

您只需将.gitignore文件添加到要保留的文件夹以及文件内容中即可:

*

这样,文件夹将存在于克隆中,但文件夹的内容将被忽略。

是的 - 您可以拥有多个.gitignore文件。