如何删除远程分支上的最新提交?

时间:2019-06-04 00:47:11

标签: git github

我向远程分支推送了一些代码,但很快发现了一个错误。

我想“取消提交”,所以我跑了

git reset hard~~ (extra tilde was by accident)

我可能搞砸了,因为在修复错误后,我提交并推送了错误,但是当我尝试推送时,我得到了一个错误。

运行

git status

显示“我的分支和远程分支已经分开,并且分别具有1和2个不同的提交”

我认为这是现在的样子:

o ---- o ---- A ---- B -- D  origin/master (2 commits ahead of A)
               \
                C  myBranch (my work (1 commit ahead of A)

如何更改存储库,使其看起来像

o ---- o ---- A ---- C

2 个答案:

答案 0 :(得分:2)

强制推送更新origin/master来提交C。

git push -f

警告::强制推送会更改分支的历史记录,并且需要将分支拉至perform manual recovery steps的其他开发人员。

提交图将最终显示为:

o <--- o <--- A <--- C  myBranch, origin/master
              ^
              |
              +--- (B) <--- (D)

在没有分支指向D的情况下,提交B和D将被孤立。它们指向A,但是没有提交,也没有分支指向它们,因此它们实际上已经消失了。它们将在您的引用日志中显示,但在其他任何地方都看不到。最终,如果您对它们什么也不做,则垃圾收集器将删除它们。

答案 1 :(得分:0)

您应该从master分支执行此操作,以删除B和D提交(最后2个提交)

注意:请务必确保您在这里所做的事情,因为这将删除具有历史记录的B和D提交。如果不确定,请先备份。

git reset --hard HEAD~2
git push --force

删除B和D后,您可以将分支与C提交合并到A之上。