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

基准分支被强制推送后仅用rebase禁止merge时如何更新feature分支

Git feature分支同步被rebase过的远程develop分支的操作方法

核心原理是使用git rebase的--onto参数,跳过旧develop分支和新develop分支的公共提交差异部分,仅迁移feature分支上独有的提交,避免大量无意义冲突。

操作步骤

  • 先备份当前的feature分支,避免操作失误丢失代码:
    git branch feature-bak
    
  • 拉取最新的远程develop分支到本地:
    git fetch origin develop
    
  • 找到feature分支从旧develop分支分叉的提交哈希值,记为分叉提交哈希:
    # 如果本地还没更新develop分支,直接运行以下命令即可获取分叉点
    git merge-base feature develop
    
  • 执行rebase操作,将feature分支上「分叉提交之后的所有独有提交」迁移到最新的远程develop分支顶端:
    git rebase --onto origin/develop <分叉提交哈希> feature
    
  • 本次rebase只会在你自己修改的feature代码和最新develop代码重叠的位置产生冲突,按正常流程解决冲突后执行git rebase --continue即可完成同步。如果中间操作出错,可以执行git rebase --abort回退,或者用之前备份的feature-bak分支恢复。

为什么直接执行git rebase develop会产生大量冲突

远程develop分支被强制推送后,旧develop分支的历史提交已经被修改/替换,直接执行git rebase develop时,Git会把旧develop的提交和新develop的提交当作两个不同分支的独立提交进行对比,大量公共代码的变更都会被识别为冲突,本质是Git无法自动识别新旧develop的提交对应关系导致的。


内容的提问来源于stack exchange,提问作者Jose Francisco Chavez Carreon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:15:00