如何提交没有变化和新的消息?

我怎么能使一个新的commit和创建一个新的消息,如果没有改变文件?

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

120216 次浏览

很少有好的理由这样做,但是对于空提交(没有更改文件),参数为--allow-empty,而对于空提交消息,参数为--allow-empty-message。你也可以通过输入git help commit或访问在线文档来阅读更多内容。

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


你可能想要一个空提交(包含一些注释)的一些原因:

  • 作为“声明性提交”,添加叙述或文档(通过DavidNeiss),包括关于通过测试或lint的事后数据(通过罗伯特Balicki)。
  • 测试git命令而不产生任意更改(通过Vaelus)。
  • 使用gitolite(通过Tatsh)重新创建已删除的裸存储库。
  • 任意创建一个新的提交,例如为了重新触发构建工具(通过mattLummus)或为了个人日志或指标(通过DynamiteReed)。但是,请三思:根据分支/合并结构的不同,提交可能会存在很长时间,所以“什么都不提交”;策略可能会在不经意间用临时的工作流工件污染团队的存储库,并使代码修订与临时的杂项很难分开。

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

  • 分离的分支或轻量级标记总是指向特定状态的提交(例如:“最后接受的提交”;或者“当前阶段的承诺”)。
  • 注释标签提供了一种记录时间戳、提交者和消息的方法,指向一个现有的提交,而不需要在提交树本身中添加一个条目。
  • git notes将一个可变的注释关联到现有的不可变提交之上。

如果我没理解错的话,你想做一个空洞的承诺。在这种情况下,你需要:

git commit --allow-empty

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

如果你使用的是像gitversion这样的系统,执行这种类型的提交是很有意义的。你可以使用+semver: major注释来提交主版本。

使用消息空提交

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

使用空消息进行空提交

git commit --allow-empty --allow-empty-message