2

我有两个分支机构。一个是从 master 分叉的,第二个是从 master 分叉的,但取决于第一个分支的变化。我想提交我的第一个分支以供审核。审核通过后,将rebase到master上。

有什么方法可以在没有第一个变更集的情况下开始在第二个分支上工作?我最初的想法是从第一个分支变基第二个分支,然后当第一个分支变基到 master 时,将第二个变更集变基到 master。这可行吗?如果不是,正确的方法是什么?

4

3 回答 3

2

免责声明:这假设Branch2它是您的存储库本地的,或者它是公共的,但没有其他人会从中提取/工作。如果有人确实尝试处理它并且您执行以下操作,它可能会引起各种头痛。


您应该能够使用命令--onto参数完成分支操作rebase。它非常强大,可以让您(至少尝试)在几乎任何其他提交之上移动几乎任何范围的提交。

对于您的情况,假设您有一个看起来像这样的图表

       e -- f            <-- Branch2
      /
a -- b                   <-- Master
      \
       c -- d            <-- Branch1

并且你想把它变成下面这样的东西,这样你就可以在等待合并批准的Branch2同时继续工作。Branch1

a -- b                   <-- Master
      \
       c -- d            <-- Branch1
             \
              e -- f     <-- Branch2

它应该能够使用命令来完成

git rebase --onto branch1 master branch2

Branch1合并后master,假设存储库如下所示

a -- b ------- g          <-- Master
      \       /
       c -- d             <-- Branch1
             \
              e -- f      <-- Branch2

然后,您可以使用以下命令Branch2重新开始master

git rebase --onto master branch1 branch2

产生一个看起来像这样的存储库

                 e -- f   <-- Branch2
                /
a -- b ------- g          <-- Master
      \       /
       c -- d             <-- Branch1

抱歉,Branch2 一直在顶部和底部之间跳跃。

于 2013-01-23T05:02:55.473 回答
0

如果您的意思是您需要从分支 2 中的分支 1 进行更改,那么您可能只想 git cherry-pick您需要从分支 1 到分支 2 的更改。这正是您正在寻找的,而不需要任何复杂的变基计划。

于 2013-01-23T03:20:40.433 回答
0

看来您正在使用 gerrit 进行代码审查。

你可以这样做:

当分支 1 被提交并合并到 repo 中时,你可以这样做:

git 获取原点

并直接 rebase 来自 branch1 的更改,例如 git rebase origin/master

兄弟,蒂姆

于 2013-01-23T03:22:18.100 回答