Git合并致代码全崩,但当前分支代码正常,如何强制替换目标分支?
强制用当前分支覆盖目标分支的解决方案
既然当前分支代码完全正常,而任何合并/rebase操作都会导致代码混乱,直接用当前分支内容替换目标分支是最快的解决方式,具体操作如下:
确认当前分支(假设为
feature-branch)代码已提交且状态干净:git status如果有未提交改动,先提交:
git add . git commit -m "最终稳定版本提交"切换到需要被覆盖的目标分支(比如
main,替换成你的实际分支名):git checkout main强制将目标分支重置为当前分支的最新提交:
git reset --hard feature-branch执行后,目标分支的所有文件会完全和当前分支一致,原分支的差异提交会被丢弃。
推送覆盖远程目标分支(如果需要同步到远程仓库):
git push --force-with-lease origin main使用
--force-with-lease而非--force,能避免意外覆盖其他协作者未推送的改动,更安全。
额外注意事项
- 此操作属于破坏性操作,执行前务必确认:
- 当前分支是经过验证的正确版本
- 目标分支没有其他未同步的协作改动
- 若公司PR要求必须是squash后的单个提交,可先在当前分支完成squash再执行上述步骤:
# 在当前分支执行,将最近N个提交合并为一个 git rebase -i HEAD~N # 在编辑器中,把第一个提交以外的所有操作从`pick`改为`squash`,保存后编辑合并提交信息 # 完成后再执行前面的重置和推送流程
内容的提问来源于stack exchange,提问作者Andrew Oliver
相关产品推荐
相关产品推荐

