如何将分支升级到旧Gerrit提交的最新版本

时间:2016-12-14 10:38:30

标签: git gerrit

我有三个依赖的Gerrit提交,在它们合并到master分支之前需要进行一些更改。

  • 提交A
  • 提交B(取决于A)
  • 提交C(取决于B)

问题是,自从添加了这三个提交以来,我的主人已经发生了重大变化。我怀疑我应该更新这三个提交的基础,然后进行更改并修改它们,但我不确定这是否是我应该做的实际情况?

我想从A到C逐一进行更改并提交回来。我做了下载>结帐>将复制到bash以获得提交A的分离HEAD,但是当我尝试运行它时,我提交了许多错误,当我提交此代码时,我不习惯使用它们。

我不确定我应该做些什么来将这些更改分别添加到所有三个,然后合并到基础分支。

为什么这很重要? 因为我的代码正在调用一些后端服务,这些服务已经更改了某些类型,并且新主服务器已经正确定义了新类型,而我过时的Gerrit提交仍然使用具有无效属性的旧类型等。

我真的想做什么? 我想我真的想要做的是将我的三个提交的基础更改为基于最新的master而不是一些旧的master提交。或许我只是误解了我应该做的事情。

修改

我尝试了一些东西,我想知道这是否是可能的方法之一? 肯定看来它将我的提交A 置于当前主HEAD之上:

git checkout master
// we're mostly rebasing
git pull origin --rebase
// copied command from gerrit
git fetch ... && git checkout FETCH_HEAD
git rebase master

在我向提交A 添加补丁之后,我也应该为B和C提交执行相同的步骤。

似乎现在更新了类型,我可以更新分离头。我没有修改我的提交,因为我想要某种确认,这将做我打算做的事。

1 个答案:

答案 0 :(得分:0)

执行以下操作。

  1. git fetch
  2. CommitA

    1. git checkout -b branch_a CommitA
    2. git rebase origin / master
    3. 解决冲突
    4. git commit --amend
    5. git push origin branch_a:master
    6. CommitB

      1. git checkout -b branch_b CommitB
      2. git rebase branch_a
      3. 解决冲突
      4. git commit --amend
      5. git push origin branch_b:master
      6. CommitC

        1. git checkout -b branch_c CommitC
        2. git rebase branch_b
        3. 解决冲突
        4. git commit --amend
        5. git push origin branch_c:master
        6. 注意1:您可以尝试使用Gerrit UI上的“Rebase”按钮执行此过程,但如果您有冲突,这将无效。

          注意2:您可以在过程结束时删除branch_ branches。毕竟,如果你只使用正确的提交ID,一切都会好起来的。

          注3:避免以这种方式工作。尽量不要根据非集成(已审核/已批准/已提交)的提交将提交提交给Gerrit。总是尝试使用“并行”提交。