如何从Git提交历史记录中删除已发布的提交?

6

我不小心使用Git提交了一次更改,将其推送到GitHub,并在此之后进行了多次提交。我需要从历史记录中删除该提交。我意识到这可能会影响其他派生分支,但我可以接受。

我可以使用以下命令在本地修改我的历史记录:

git rebase --onto HEAD~4 HEAD~3 HEAD

看起来一切正常。但是我不知道如何将已更改的历史记录适当地推送回Github。


1
“git push --force” - 如果不加上--force/-f标志,Git不会让你擦除历史记录。 - vcsjones
实际上问题是我不再在HEAD上了,git状态显示没有更改,而git推送则表示没有可推送的内容。 - Alex Miller
2个回答

4

经过一些摸索,我设法以另一种方式完成了整个过程:

git rebase -i <commit>^
... delete first commit in editor ...
git push -f

3

如果您有任何需要保存的合并,请使用以下方法:

git rebase -i --preserve-merges commit^

否则,git将会压缩您的历史记录。
然后使用强制选项进行推送。

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