如何提交无更改和新消息?

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 ""

以上是关于如何提交无更改和新消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Github 的默认提交消息?

GitVersion:如何通过提交消息回滚 SemVer 编号更改?

markdown 如何在Git中更改提交消息? - 首次发表于fullweb.io第55期

markdown 如何在Git中更改提交消息? - 首次发表于fullweb.io第55期

如何防止引导验证在表单提交之前显示错误消息?

如何在 git 中编辑任何提交的提交消息? [复制]