如何将my-branch变基到master并移除bad-branch的提交?
解决Git变基后推送坏提交回归的问题
你的核心问题是:本地修改了分支历史,但远程仓库还保留着旧的提交记录,直接推送时Git自动合并了新旧历史,导致C、D提交又回来了。按下面步骤操作就能彻底清理掉坏提交:
- 先同步本地master分支到最新状态:
git checkout master git pull - 切回你的my-branch:
git checkout my-branch - 用交互式变基把E、F直接移到master的B提交后面,同时丢弃C、D:
执行命令后会弹出编辑器界面,里面会列出从master分叉后所有的提交(C、D、E、F),把C、D对应的行开头的git rebase -i masterpick改成drop,保存并退出编辑器。完成后你的my-branch就会变成A--B--E--F的结构。 - 强制推送改写远程分支的历史:
用git push --force-with-lease origin my-branch--force-with-lease比直接--force更安全,能避免不小心覆盖其他人推送到这个分支的未同步修改。如果这个分支只有你在使用,直接用--force也可以,但优先推荐前者。
注意:如果这个分支还有其他协作者,一定要提前和他们沟通,让他们同步新的分支历史(他们需要执行git pull --rebase或者重新拉取分支),不然他们后续推送会再次引发历史冲突。
内容的提问来源于stack exchange,提问作者André Walker
相关产品推荐
相关产品推荐

