You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

目标分支与源分支均已删除时,能否撤销Git合并操作?

问题解答

变更是否丢失?

不会丢失。你本地还保留着有误的目标分支和已合并的分支,这些分支上的所有提交记录都存储在本地Git仓库中,只要不主动删除本地分支或清理提交历史,变更就不会消失。

GitLab为何允许此操作?

GitLab的分支合并逻辑核心是基于提交对象而非分支本身:

  • 若你是通过合并请求(MR)完成操作,可能是MR创建后目标分支被删除,但MR的合并动作仍能执行——因为合并时是将源分支的提交与目标分支的最后一次提交进行合并,生成新的合并提交,即使目标分支已被删除,只要合并操作能找到目标分支的最后提交记录,就能完成合并。
  • 合并后自动移除源分支的配置是独立执行的逻辑,只要合并动作完成,不管目标分支状态如何,都会触发源分支的删除。

解决本地拉取报错的方法

你遇到的报错是因为本地wrong-target-branch的上游关联指向了已被删除的远程分支,执行以下操作即可修复:

  • 取消本地分支的上游关联:
    git branch --unset-upstream wrong-target-branch
    
  • 若不再需要本地的错误目标分支,直接删除:
    git branch -D wrong-target-branch
    

除重新操作外的其他解决方案

  1. Cherry-pick合并提交到正确分支
    切换到正确的目标分支,将错误合并产生的合并提交挑过去:

    git checkout correct-target-branch
    git cherry-pick <合并提交的哈希值>
    git push origin correct-target-branch
    

    (可以用git log wrong-target-branch找到合并提交的哈希值)

  2. 恢复源分支并重新合并
    若本地还保留着源分支,先将其推回远程恢复:

    git push origin source-branch
    

    然后在GitLab上重新创建合并请求,将源分支合并到正确的目标分支,完成后再删除源分支即可。

  3. Rebase源分支提交到正确分支
    如果源分支的提交没有冲突,可以将源分支的提交变基到正确分支上:

    git checkout source-branch
    git rebase correct-target-branch
    git checkout correct-target-branch
    git merge source-branch
    git push origin correct-target-branch
    

内容的提问来源于stack exchange,提问作者auf keinsten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:15:01