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

如果不对文件做任何修改,我怎么能做一个新的commit并且创build一个新的消息?

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

这样做很less有很好的理由,但是对于空提交,参数是--allow-empty ,而对于空消息则是--allow-empty-message 。 您也可以通过键入git help commit或访问联机文档来阅读更多内容 。

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


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

  • 作为一个“声明性提交”,添加叙述或文件(通过DavidNeiss ),包括关于通过testing或皮棉的事后数据(通过Robert Balicki )。
  • testinggit命令而不会产生任何更改(通过Vaelus )。
  • 使用gitolite (通过Tatsh )重新创build已删除的裸仓库。
  • 任意创build一个新的提交,例如重新触发构build工具(通过mattLummus )或为了个人日志logging或指标(通过BlueJ774 )。 然而,要考虑一下:根据你的分支/合并结构,提交可能会持续很长一段时间,所以一个“没有提交”的策略可能会无意中污染你的团队的仓库临时工作stream程的工件,并很难分开代码修订短暂的cruft。

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

  • 独立的分支或轻量级标签,总是指向特定状态的提交(例如,“最后接受的提交”或“当前的分段提交”)。
  • 注释标记用于logging时间戳,提交者和消息的方式,指向现有提交而不在提交树本身中添加条目。
  • git notes在现有的不可变的提交之上关联一个可变的注释。

如果我理解你的话,你想做一个空的提交。 在这种情况下,您需要:

 git commit --allow-empty 

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

如果你正在使用像gitversion这样的系统做这种提交很有意义。 您可以使用+ semver:主要评论来提交特定的版本。

空消息提交

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

用空信息清空提交

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