我修复了一些代码并使用不正确的提交消息推送它。当我试图修复提交消息时,我意外地恢复了提交。现在的情况是:
- 最新提交 = 正确的提交消息,但先前提交的更改已撤消
- 先前的提交 = 正确的提交内容,但错误的提交信息
所有这些都已经推送到服务器了。
我想摆脱最新的提交,更改先前提交的提交消息并将其推送回服务器。
我对 Atlassian Source Tree 的解决方案很满意,但命令行也可以。
我修复了一些代码并使用不正确的提交消息推送它。当我试图修复提交消息时,我意外地恢复了提交。现在的情况是:
所有这些都已经推送到服务器了。
我想摆脱最新的提交,更改先前提交的提交消息并将其推送回服务器。
我对 Atlassian Source Tree 的解决方案很满意,但命令行也可以。
如果是最后一次提交,这很容易:
git commit --amend
这会打开带有最后一条提交消息的编辑器,并允许您编辑该消息。(如果要清除旧消息并使用新消息,可以使用 -m。)
然后当你推动时,这样做:
git push --force <repository> <branch>
你不应该修改一个已经被公开推送的提交,因为你的队友可能已经拉了它,当他们拉时 git 会将你的新提交与旧提交合并,并在他们推送时将它带回来(请参阅progit 中的本章以了解细节)。
我建议你保持原样(也许只是添加一个带有扩展消息的新提交,以便人们在原始提交消息中得到你想要的东西)。
如果您确实需要将其从历史记录中删除,您需要所有拉动您的提交的队友将他们的新提交重新建立在您所讨论的新版本的提交上。