【问题标题】:git and empty foldersgit 和空文件夹
【发布时间】:2009-11-19 22:56:58
【问题描述】:

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

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

【问题讨论】:

标签: git version-control


【解决方案1】:

我通常将.gitignore 放在这些目录中,因为您可能希望忽略任何运行时生成的数据。

【讨论】:

【解决方案2】:

人们经常在文件夹中放置一个空文件作为占位符来克服这个限制......

【讨论】:

  • 我个人会把它做成一个自述文件,简要说明文件夹存在的原因
  • @jk。或者在需要时创建目录。当目录不存在时,你的 shell 脚本或构建工具死掉不是 git 的错。
  • @omouse 实际上,这通常是错误构建或部署工具/脚本的解决方法
【解决方案3】:

我通常将空的 .gitkeep 放在那些文件夹中。

【讨论】:

  • 这是我一直在寻找的模式
【解决方案4】:

你完全正确。与其他一些版本控制系统一样,Git 不会识别空文件夹或文件夹的属性。文件夹只存在于其中有文件的情况下。如果你想模拟这个,你需要将占位符文件放入其中。

【讨论】:

    【解决方案5】:

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

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

    同样,如果应用程序想要附加到日志文件,让该日志文件在版本控制系统中启动也没有意义,不是吗?

    【讨论】:

      【解决方案6】:

      如果可能,请将空占位符文件放入您希望 git 跟踪的文件夹中,或者添加说明以在您的构建系统中创建这些文件夹。

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

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

          同样,我的目的是存储文件,而不是使用代码。

          【讨论】:

          • 为什么不直接使用 rsync?
          • @omouse:rsync 不跟踪更改。 meingbg 可能对 git-annex 感兴趣,这是一个基于 git 的解决方案,用于跟踪文件的变化。
          猜你喜欢
          • 2016-07-12
          • 2018-06-25
          • 2018-08-15
          • 2017-07-13
          • 2014-01-28
          • 2014-10-12
          • 2012-11-08
          • 1970-01-01
          相关资源
          最近更新 更多