2009-11-19 60 views
22

所以我看到Git无法识别文件夹,或者我应该说当提交之间的唯一更改是将空文件夹添加到工作树时,它们不会在git add .之后显示在git status中。git和空文件夹

如何处理将空文件夹添加到工作树(用于运行时存储)的需求,并在其他存储库从当前存储库(其中添加了文件夹的存储库)中取出时反映/创建它们?

+2

可能的重复[如何将一个空目录添加到git存储库](http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-toa-a- git-repository) – interjay 2011-07-03 18:59:12

+0

我已经在这里做了一个关于这个的小博客文章http://www.developertipoftheday.com/2011/07/empty-folders-in-git-mecurial.html可能有帮助。 – 2011-08-15 12:47:12

回答

21

人们常把一个空文件作为占位符的文件夹中,以克服限制......

+13

个人我想让它成为自述文件,并附上一些简要说明文件夹存在的原因 – 2009-11-20 09:02:04

+0

@jk。或者在需要时创建目录。当目录不存在时,你的shell脚本或构建工具就不会死掉。 – 2013-07-22 17:07:08

+1

@omouse实际上这通常是一个解决bug的构建或部署工具/脚本的解决方法 – 2013-07-22 17:53:42

6

你是绝对正确的。像其他一些版本控制系统一样,Git不会考虑空文件夹或文件夹属性。只有存在文件的文件夹才存在。如果你想模拟这个,你需要放置占位符文件到它们中。

42

我通常会在这些目录中放置一个.gitignore,因为无论如何您可能会忽略任何运行时生成的数据。

+7

另一个约定是在目录中放置一个名为“.gitkeep”的文件。请参阅:http://stackoverflow.com/questions/7229885/gitignore-vs-gitkeep – 2012-12-22 17:02:02

3

要么将​​空的占位符文件放入您想要跟踪的文件夹中,要么添加说明以在可能的情况下将这些文件夹创建到您的构建系统。

4

您应该意识到您正在要求您的源代码管理系统设置一些非源代码的资源,这些资源不是您的构建系统的一部分,但是对于您的应用程序的运行至关重要。我会执行以下操作之一:

  1. 使构建创建必要的目录。
  2. 让应用程序在运行时创建所需的目录。

同样,如果应用程序想附加到日志文件,那么在修订控制系统中启动该日志文件是没有意义的,是吗?

-3

我在尝试将git用作支持重复数据删除和压缩的备份工具时遇到了此问题。

我的解决方案是创建我自己的系统。它可在http://github.com/meingbg/store

再次,我的目的是存储文件,而不是代码工作。

+0

为什么你不使用rsync? – 2013-07-22 17:07:24

+0

@omouse:rsync不会跟踪更改。 meingbg可能对git-annex感兴趣,git-annex是一个基于git的解决方案,可以跟踪文件的变化。 – sleblanc 2016-02-04 16:54:40

0

我也面临同样的问题。我认为这与Git跟踪更改的方式有关。它不跟踪文件,而是跟踪其内容。在显示更改,提交或日志时,它会将更改映射到特定文件并显示单个文件中的更改。看到这个视频的更多细节Tech Talk: Linus Torvalds on git Linus特别提供了一个关于如何将函数从一个文件移动到另一个文件以及git如何跟踪这个改变的例子。

6

我通常在这些文件夹中放置了空的.gitkeep