Git 如何删除远程分支上的最新提交?
我将一些代码推送到一个远程分支,但很快就发现了一个bug 我想“取消承诺”,所以我跑了Git 如何删除远程分支上的最新提交?,git,github,Git,Github,我将一些代码推送到一个远程分支,但很快就发现了一个bug 我想“取消承诺”,所以我跑了 git reset hard~~ (extra tilde was by accident) 我可能搞错了,因为我修复了错误后,我就开始了,但是当我尝试推的时候,我得到了一个错误。 运行 git status 显示“我的分支和远程分支已分离,并且每个分支有1个和2个不同的提交” 我想这就是它现在的样子: o ---- o ---- A ---- B -- D origin/master (2 commi
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
强制推送更新
origin/master
以提交C
git push -f
注意:强制推送会更改分支的历史记录,并需要其他已将分支拉入的开发人员
提交图将以以下形式结束:
o <--- o <--- A <--- C myBranch, origin/master
^
|
+--- (B) <--- (D)
o您应该从主分支执行此操作,以删除B和D提交(最后2次提交)
注意:请非常确定您在这里执行的操作,因为它将删除您的B和D提交以及历史记录。如果您不确定,请先进行备份
git reset --hard HEAD~2
git push --force
删除B和D后,您可以将分支与A上的C提交合并。如果其他人已经与此分支合并,这会在将来造成问题吗?我将来可以安全合并吗?如果在删除提交B和D之前创建了新的分支X,则X分支将包含在B和D中所做的更改。当用户尝试合并Bra时nch X在master中,看起来分支X引入了B和D。因此,重新设置分支X的基础以使其与master中所做的更改保持更新非常重要。如果其他人已经与该分支合并(具有B-D的版本),这会不会在将来造成麻烦?我将来可以安全地合并吗?B-D提交将被孤立,并最终被垃圾收集,合并到提交图那一行的任何内容也会被垃圾收集。提交将在您的reflog中保留几个星期,如果您不重新恢复它们,则最终将被删除。是的,您可以安全地在C上继续合并。等等,当您说我可以的时候在C上安全合并,这是否意味着已经与此分支合并的人将来可以与我的分支合并?该人的分支中是否已经有提交B和D?如果他们在我运行git push-f后再次尝试合并,他们的历史会发生什么变化?