2010-06-12 162 views
30

我创建了一个Android项目,将它添加到我的git仓库中,并将我的克隆推送给主人。后来我试着检出项目,Eclipse抱怨缺少src文件夹。我检查了我的回购和主回购和src文件夹丢失(我确定他们在那里,当我创建项目)。那么有人可以解释这里发生了什么?林新来git所以也许我错过了什么?git是否忽略空文件夹?

+0

可能重复[git和空文件夹](http://stackoverflow.com/questions/1767165/git-and-空文件夹) – Cascabel 2010-06-13 03:23:21

回答

52

Git不会忽略空目录。它忽略了全部目录。在Git中,目录只是通过其内容隐含存在。 emtpy目录没有内容,因此它们不存在。

或者换句话说:Git是一个内容跟踪器。空目录不是内容。

+26

不完全。 git有一个“树”(它对应于一个目录)的概念,树实际上有一个sha1散列,因此具有内容:blob(文件)和树(子目录)的列表。所以'git'实际上可以(理论上)记录空目录。 问题在于索引文件(暂存区):它只列出文件;并且提交是从索引文件构建的。 – hasen 2010-06-13 08:05:29

43

是的,git忽略空文件夹。

您可以将空的.gitignore.gitkeep文件添加到任何要包含的文件夹中。

+0

+1其他信息 – Dawnkeeper 2014-11-11 08:15:56

+1

以下是如何做到这一步... 'find。 -depth -not -path“* target *”-not -path“./.git/*”-type d -empty -print' [...这里有很多东西...] 'find。 -depth -not -path“* target *”-not -path“./.git/*”-type d -empty -exec touch {} /。gitignore \;' – 2016-05-06 12:11:23

8

Git跟踪内容而不是文件。

提出了一种解决方案here

3

git忽略所有目录是否为空。

当文件需要存在一个不存在的目录中时,git会在磁盘上构建一棵树时重新创建目录。否则,不会注意目录。

1

是,混帐忽略空文件夹,如何解决一些建议是:

  1. 把README文件的文件夹内,并说明该文件夹的内容,或者为什么是空的文件夹,必须保持
  2. 把一个叫做.gitignore的空文件放在文件夹里面
  3. (我最喜欢的)把一个名为.gitkeep的空文件放在里面。此解决方案是上下文,因为如果有人看到该文件将理解为什么它在文件夹中