如何提交无更改和新消息?
Posted
技术标签:
【中文标题】如何提交无更改和新消息?【英文标题】:How to commit no change and new message? 【发布时间】:2012-09-10 07:19:16 【问题描述】:如果没有对文件进行任何更改,我如何创建新的commit
并创建新消息?
这是不可能的,因为提交的代码 (SHA ?) 将是相同的吗?
【问题讨论】:
【参考方案1】:很少有这样做的好理由,但参数是 --allow-empty
用于空提交(没有文件更改),而 --allow-empty-message
用于空提交消息。您也可以通过输入git help commit
或访问the online documentation 阅读更多内容。
虽然树对象(有自己的哈希)是相同的,但提交实际上会有不同的哈希,因为它可能有不同的时间戳和消息,并且肯定会有不同的父提交。所有这三个因素都集成到git
的对象哈希算法中。
有您可能需要一个空提交(包含一些 cmets)的几个原因:
作为“声明性提交”,添加旁白或文档(通过 DavidNeiss),包括有关通过测试或 lint 的事后数据(通过 Robert Balicki)。 在不产生任意更改的情况下测试git
命令(通过Vaelus)。
使用gitolite
(通过Tatsh)重新创建已删除的裸存储库。
任意创建一个新的提交,例如重新触发构建工具(通过mattLummus)或为了个人日志记录或指标(通过DynamiteReed)。但是,请三思:根据您的分支/合并结构,提交可能会持续很长时间,因此“不提交任何内容”策略可能会无意中用临时工作流工件污染团队的存储库,并且难以将代码修订与短暂的垃圾。
将元数据添加到提交树的其他策略包括:
单独的分支或轻量级标签始终指向特定状态的提交(例如“最后接受的提交”或“当前暂存提交”)。 Annotated Tags 用于记录时间戳、提交者和消息的方法,指向现有提交,而无需在提交树本身中添加条目。git notes
在现有的不可变提交之上关联可变注释。
【讨论】:
我已经开始关注 git flow branch model。当您创建一个dev
分支表单master
,然后立即从dev
创建一个feat
分支时,feat
分支看起来来自master
分支,因为在dev
上没有区别提交feat
分支来自的分支。首次创建 dev
分支时的空提交有助于建立 dev
分支,因为它是独立于 master
的无限期持久分支。通常,当您使用分支作为层时,它会很有帮助,并从一次提交中创建两个层
另一个原因:如果你在推送之前从你的提交信息中省略了一些重要的东西,如果遥控器不允许强制推送,你就不能做commit --amend
。通过这种方式,您可以让开发人员看到与上一次提交相关的重要消息。
我想这样做是因为我推送了一个提交,但忘记在提交消息中提及某些内容。我们的提交消息与问题跟踪和持续集成软件集成在一起,提交消息的内容会影响这些应用程序。有没有更好的办法?就我而言,这似乎是最好的解决方案。我能想象的唯一一件事就是能够以某种方式恢复之前的提交。
我只是用它来触发我们的预提交钩子,它为数据库编写脚本。所以有一些变化,只是 git 在脚本运行之后才能看到它们。当然可以手动运行它,但那样会运行脚本两次。
在与 github 和 gogs 等 git 服务器内置的问题跟踪交互时非常有用。【参考方案2】:
如果我理解正确,您想进行空提交。在这种情况下,您需要:
git commit --allow-empty
【讨论】:
【参考方案3】:也许作为更明智的选择,您可以创建一个annotated tag(带有消息的命名提交)。请参阅git tag -a
选项。
【讨论】:
【参考方案4】:如果你使用像gitversion 这样的系统,那么做这种提交是很有意义的。您可以使用 +semver: 主要注释进行专门用于提升主要版本的提交。
【讨论】:
【参考方案5】:带有消息的空提交
git commit --allow-empty -m "Empty test commit"
带有空消息的空提交
git commit --allow-empty --allow-empty-message
【讨论】:
allow-empty-message
标志提示提交消息。要跳过该提示,我们可以使用 -m ""
传递空的混乱,例如 git commit --allow-empty --allow-empty-message -m ""
以上是关于如何提交无更改和新消息?的主要内容,如果未能解决你的问题,请参考以下文章
GitVersion:如何通过提交消息回滚 SemVer 编号更改?
markdown 如何在Git中更改提交消息? - 首次发表于fullweb.io第55期