如何删除已推送到Bitbucket远程master分支的旧Git提交

重要提醒:修改已推送到公共master分支的提交会影响所有协作者,操作前请确认所有团队成员已提交本地未推送的修改并同步最新远程master代码,避免代码丢失
优先推荐方案:git revert(无历史改写,适合多人协作场景)
该方案不会修改现有提交历史,只会新增一条反向撤销提交,不会对其他协作者的本地分支造成影响,是公共生产分支的首选操作方式
- 第一步:切换到本地master分支并同步最新代码
git checkout master && git pull origin master - 第二步:执行撤销命令,替换
<待删除提交的哈希值>为你截图中黄色高亮提交的完整哈希值(可在Bitbucket提交详情页复制)git revert <待删除提交的哈希值> - 第三步:如果执行过程中出现冲突,解决冲突后执行以下命令完成撤销提交
git add . && git revert --continue - 第四步:将生成的撤销提交推送到远程master
git push origin master
可选方案:git rebase -i(改写提交历史,仅适合单人维护/协作者极少且已提前同步的场景)
如果必须彻底抹除该提交的所有历史记录可以使用该方案,操作前务必通知所有协作者后续需要强制同步最新master
- 第一步:切换到本地master分支并同步最新代码
git checkout master && git pull origin master - 第二步:执行交互式变基命令,替换
<n>为该提交距离当前HEAD的提交数,比如你要删除的是当前最新5个提交里的某一个,就写HEAD~5git rebase -i HEAD~<n> - 第三步:在弹出的编辑界面中,找到对应要删除的提交那一行,将行首的
pick修改为drop,保存后退出编辑 - 第四步:如果变基过程出现冲突,解决冲突后执行以下命令继续变基
git add . && git rebase --continue - 第五步:变基完成后强制推送至远程master
git push -f origin master - 第六步:通知所有协作者执行以下命令同步修改后的master分支
git checkout master && git fetch origin && git reset --hard origin/master
内容的提问来源于stack exchange,提问作者RRB
相关产品推荐
相关产品推荐

