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

如何在Git/Gerrit中同时处理两个分支?未合并分支同步及创建方案

解决Gerrit评审分支更新后的本地分支同步问题

首先,咱们得先弄明白你为啥git pull --rebase会失败:你通过git checkout FETCH_HEAD创建的本地BranchB,没有关联任何远程追踪分支,Git根本不知道你要从哪个远程分支拉取更新并做rebase,所以才会提示你指定拉取分支。

先解决当前的同步问题

按照下面的步骤操作就能把BranchB同步到BranchA的最新版本:

  1. 先去Gerrit UI上找到BranchA对应的评审页面,查看最新的Patch Set编号(比如之前你用的是15,现在维护者更新后可能变成16了)。
  2. 执行fetch命令拉取最新的变更集:
    git fetch ssh://**@**gerrit..****:12345/project-repo refs/changes/02/89765/<最新Patch Set编号>
    
  3. 切换到本地BranchB分支:
    git checkout BranchB
    
  4. 将本地BranchB rebase到刚拉取的最新变更集上:
    git rebase FETCH_HEAD
    
    这样就能把BranchB的代码和BranchA的最新版本合并,同时保留你自己的提交历史。

这种场景下的理想分支创建方式

下次再遇到要基于Gerrit评审中持续更新的分支创建新分支时,别直接checkout FETCH_HEAD,试试这个流程:

  1. 先拉取目标评审分支的最新变更集(同样从Gerrit UI获取Patch Set编号):
    git fetch ssh://**@**gerrit..****:12345/project-repo refs/changes/02/89765/<最新编号>
    
  2. 基于拉取的变更集创建带名称的本地分支,而不是直接用FETCH_HEAD:
    git checkout -b BranchB FETCH_HEAD
    
  3. 后续BranchA有更新时,重复步骤1拉取最新变更集,然后在BranchB上执行git rebase FETCH_HEAD即可同步。

如果你的团队常用Gerrit,也可以考虑安装git-review工具,它能更方便地追踪评审分支的更新,不用每次手动复制fetch命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:49:32