【问题标题】:Can I handcraft my own commit for an empty directory?我可以为空目录手工制作自己的提交吗?
【发布时间】:2016-01-10 03:42:47
【问题描述】:

How can I add an empty directory to a Git repository?”的答案是你不能通过常规的 git 命令,因为暂存只有文件,没有文件夹。

另一方面,提交确实有文件夹,因此可以想象提交可能有一个空文件夹。

如何使用空文件夹创建提交?提交删除空文件夹怎么样?我可以在其他更改之上添加空文件夹(通过暂存区域进行)吗?

注意:这是提交可以包含文件夹的证据:

$ git cat-file -p 6c07af3
tree 3d6e2028b57fba5cd2c5f1f01cdd5be9814335ec
author *** 1452398070 -0500
committer *** 1452398070 -0500

A commit

$ git cat-file -p 3d6e20
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    file1
040000 tree e4af7700f8c091d18cc15f39c184490125fb0d17    folder

请注意,它存储哪些是文件,哪些是文件夹,以及文件和文件夹名称。我想要做的是创建我自己的 git commit 对象,而不经过暂存过程。

【问题讨论】:

  • 注意:提问者对任何回答尝试投反对票
  • 那个问题包含一个答案stackoverflow.com/a/8944077/1256452,这是你能得到的最接近的答案:你可以使用半秘密空树作为常规树中的条目。不过,请注意答案中的所有警告;简短的版本是“不要这样做”。
  • @codeWizard 虽然我很高兴对这个问题感兴趣,但到目前为止所有的答案都是错误的,投票反映了这一点。
  • 你不必接受答案,但要感谢那些试图帮助你的人。
  • @codeWizard 再次感谢您的关注。否决票并不意味着我不喜欢你或任何东西,只是我不同意这个答案。如果您认为这是正确的,请说服我。

标签: git git-commit


【解决方案1】:

在 Git 中,您不能提交空文件夹,因为 Git 实际上并不保存文件夹,只保存文件。如果您实际上希望它们为“空”(即您没有可提交的内容),则必须在这些目录中创建一些占位符文件。 了解更多信息和您的回答Commit empty folder structure (with git)

【讨论】:

  • 暂存区不跟踪文件夹。提交做(我检查过)。
  • 降低问题,以便将其删除。他对所有答案都投了反对票。我们会以同样的方式返回他,所以他的 Q 将被删除
  • @stackprogramer 如果您希望删除 Q,请举旗
  • 很遗憾我的声望不够
【解决方案2】:

“如何将空目录添加到 Git 存储库?”的答案是不是不能通过常规的git命令,因为staging只有文件,没有文件夹。

如果您将通常名为 .gitkeep 的空文件添加到您的文件夹中,那么您可以这样做,这样 git 将跟踪该文件夹,因为它有内容。

# go to the desired folder    
cd <folder>

# Create empty file 
touch .gitkeep

# git status will now show the file so you can add the folder to git

Git 不跟踪文件!!!它跟踪内容而不考虑其位置,因此空文件夹没有任何要跟踪的内容。为了跟踪它们,它们必须有内容。

.gitkeep 只是一个占位符。
一个虚拟文件,所以 git 不会忘记目录,因为 git 只跟踪文件而不跟踪目录。


正如您在此处看到的,git 并不关心文件的名称或文件的位置。它将元数据存储在与文件不同的位置。

【讨论】:

  • 虽然您可以将.gitkeep 文件添加到一个空文件夹,但是当您提交它时,您将提交一个只有一个文件的文件夹,而不是一个空文件夹。
  • 没错,因为 git 不能跟踪空文件夹。否则无法添加空文件夹。
  • 您只是从链接的问题中复制答案。
  • 我的编辑说明了为什么这个答案及其前提是不正确的。
猜你喜欢
  • 2021-10-29
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多