Git:修改现有的提交消息

错误很常见,我们都会犯。 这就是他们在铅笔上放橡皮擦的原因。 这与 Git 这样的工具没有什么不同。 虽然某些更改可能难以撤消,但通常有一种方法。

那么,如果您想修改现有的提交消息怎么办? 幸运的是,这在 Git 中很简单,但该方法可能会根据某些因素而有所改变。

修复上次提交,尚未推送到远程

这是最简单的情况,因为不需要修改远程存储库,您只需要修改自己的。 在这种情况下,您可以使用以下命令:

$ git commit --amend

运行此命令将打开一个编辑器,您可以在其中修改 最后 提交消息。 完成并保存/关闭编辑器后,提交消息将被更改。

就个人而言,我更喜欢在命令行上做大部分事情,你可以通过在上面的命令中添加一个参数和消息来做到这一点:

$ git commit --amend -m "Added a new file"

这样做不会打开编辑器,而是会立即修改提交消息。

修复上次提交,推送到远程

这是另一种常见的情况,并且更难修复,不仅因为我们需要修改自己的存储库,而且还需要修改远程存储库,这可能比您的本地分支更靠前。

第一步是修改最后一次提交,就像我们在上一节中所做的那样:

$ git commit --amend -m "Added a new file"

然后,您需要将这些更改推送到远程存储库。 但是,这必须使用 --force 旗。

$ git push <remote> <branch> --force

我们需要这样做,以便用我们自己的本地状态覆盖远程存储库。

请注意,通过强制推动,您还将 失去 您在本地分支中还没有的本地分支上的任何提交。 谨慎行事!

查看我们的 Git 学习实践指南,其中包含最佳实践、行业认可的标准以及随附的备忘单。 停止谷歌搜索 Git 命令,实际上 学习 它!

如果你能足够快地发现错误,那么做出改变就不是问题。 否则,您可能需要找到另一种解决方案以避免丢失在您想要更改的提交消息之后所做的任何更改。

使用交互式变基

另一个比之前描述的解决方案更灵活的选择是使用交互式变基。 这样做可以让您检查最后的 N 次提交并对它们进行更改,包括挑选、挤压等。

要启动 rebase,可以使用以下命令:

$ git rebase -i HEAD~n

在这里, n 是您要检查和编辑的提交数。 然后,您将看到一个提交列表,类似于:

$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file



















如您所见,列出了所有最后 N 次提交,您可以根据需要修改它们的消息。

时间戳记:

更多来自 堆栈滥用