如何在Git上重新推送一个已修复的提交?

4
我修正了一些代码并提交,但是提交信息不正确。当我试图更正提交信息时,我不小心撤销了提交。现在情况如下:
  • 最新提交=正确的提交信息,但上一个提交的更改已撤消
  • 上一个提交=正确的提交内容,但提交信息错误
所有这些都已经推送到服务器上。
我想要删除最新的提交,更改上一个提交的提交信息,并将其推送回服务器。
对于Atlassian Source Tree的解决方案我很满意,但命令行也可以。
2个回答

10
如果这是最后一次提交,那就容易了:
git commit --amend

这会打开编辑器并显示最后一次提交的消息,允许您对其进行编辑(如果您想要清除旧消息并使用新消息,可以使用 -m 参数)。

然后在推送时执行以下操作:

git push --force <repository> <branch>

参考资料:在推送后更改git提交信息(假设没有人从远程抓取)


请注意,如果有人已经拉取了这个提交(他们将拉取您的新提交并将其与现有提交合并,然后再次推送),那么这种方法将无法奏效。 - Isantipov
1
这正是我需要的,因为还没有人拉取我的提交。 - Krumelur
非常感谢,你刚刚帮我避免了一个巨大的烦恼。赞!=) - Carl Finch

0

你不应该修改已经公开推送的提交,因为你的队友可能已经拉取了它,当他们拉取并推送时,git会将你的新提交与旧提交合并并带回来(详见progit中的章节)。

我建议你将其保留原样(也许只需添加一个新的提交,以便人们在原始提交消息中得到你想要的信息)。

如果你真的需要从历史记录中删除它,你需要让所有拉取你提交的队友,在你所涉及的提交的新版本上重新基于他们的新提交进行变基。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接