186

如果没有对文件进行更改,我如何commit创建新消息并创建新消息?

这是不可能的,因为提交的代码(SHA?)将是相同的?

4

5 回答 5

228

这样做很少有充分的理由,但该参数--allow-empty用于空提交(没有文件更改),与--allow-empty-message空提交消息相反。您还可以通过键入git help commit或访问在线文档来阅读更多内容。

虽然树对象(有自己的哈希)是相同的,但提交实际上会有不同的哈希,因为它可能有不同的时间戳和消息,并且肯定会有不同的父提交。所有这三个因素都集成到git的对象哈希算法中。


几个原因你可能想要一个空的提交(包含一些评论):

  • 作为“声明性提交”,添加旁白或文档(通过DavidNeiss),包括关于通过测试或 lint 的事后数据(通过Robert Balicki)。
  • git在不产生任意更改的情况下测试命令(通过Vaelus)。
  • gitolite使用(通过Tatsh )重新创建已删除的裸存储库。
  • 任意创建一个新的提交,例如重新触发构建工具(通过mattLummus)或为了个人日志记录或指标(通过DynamiteReed)。但是,请三思:根据您的分支/合并结构,提交可能会持续很长时间,因此“不提交任何内容”策略可能会无意中用临时工作流工件污染团队的存储库,并且难以将代码修订与昙花一现。

将元数据添加到提交树的其他策略包括:

  • 单独的分支或轻量级标签始终指向特定状态的提交(例如“最后接受的提交”或“当前暂存提交”)。
  • 带注释的标签,用于记录时间戳、提交者和消息,指向现有提交,而无需在提交树本身中添加条目。
  • git notes在现有的不可变提交之上关联可变注释。
于 2012-09-18T03:38:07.303 回答
69

带有消息的空提交

git commit --allow-empty -m "Empty test commit"

带有空消息的空提交

git commit --allow-empty --allow-empty-message
于 2017-11-06T15:36:35.613 回答
53

如果我理解正确,您想进行空提交。在这种情况下,您需要:

git commit --allow-empty
于 2012-09-18T03:38:21.307 回答
4

也许作为更明智的选择,您可以创建一个带注释的标签(带有消息的命名提交)。查看git tag -a选项。

于 2012-09-18T09:06:38.510 回答
4

如果你使用的是像gitversion这样的系统,那么做这种提交是很有意义的。您可以有一个专门用于使用 +semver: 主要注释来提升主要版本的提交。

于 2016-04-28T17:13:49.100 回答