如何提交没有改变和新消息?
如果不对文件做任何修改,我怎么能做一个新的commit
并且创build一个新的消息?
这是不可能的,因为提交的代码(SHA?)将是相同的?
这样做很less有很好的理由,但是对于空提交,参数是--allow-empty
,而对于空消息则是--allow-empty-message
。 您也可以通过键入git help commit
或访问联机文档来阅读更多内容 。
虽然树对象(具有它自己的散列)将是相同的,但提交实际上会有不同的散列,因为它大概会有不同的时间戳和消息,并且肯定会有不同的父提交。 所有这三个因素都集成到git
的对象散列algorithm中。
有几个原因可能需要一个空的提交(包含一些评论):
- 作为一个“声明性提交”,添加叙述或文件(通过DavidNeiss ),包括关于通过testing或皮棉的事后数据(通过Robert Balicki )。
- testing
git
命令而不会产生任何更改(通过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