首页 > 解决方案 > git:如何将一个分支建立在多个本地分支上?

问题描述

我正在开发一个新功能。我需要修改现有代码库的两个不同部分,然后才能在第三处编写我的功能。

由于我们的代码审查政策是使更改尽可能小,因此我在不同的分支中进行了两次更改。所以我的提交树看起来像

              branch_1
             /
remote/master
             \
              branch_2

branch_1 和 branch_2 的上游都设置为 remote/master(也就是说,我都做git branch --set-upstream-to=remote/master了)。

到目前为止,一切都很好; 同步远程/主后,我可以git pull --rebase更新每个分支。

但是,现在我想处理我的实际功能,这需要更改 branch_1 和 branch_2。但是我希望在我开发该功能时会更新 branch_1 和 branch_2 的提交,因此我需要能够在更新时从 branch_1 和 branch_2 中提取更改。换句话说,我想要:

              branch_1
             /        \
remote/master          feature
             \        /
              branch_2

在功能分支中,我想查看 branch_1 和 branch_2 的最新更改,或者至少能够通过使用类似的东西将它们拉入git pull

有没有办法做到这一点?

注意:我不能让 branch_1 使用 branch_2 作为其上游,反之亦然。我们使用的工具(Gerrit 的repo upload)只是不支持它。

标签: git

解决方案


一旦您确定要交付的特性同时需要分支 1 和分支 2,一个可能的前进路径是合并两个分支,并且从现在开始只使用特性。
每当您需要使其保持最新时,您只会重新设置功能。

如果没有,您将需要重复合并到功能,如果功能有自己的提交影响两个分支的代码,这可能会出现问题:可能会发生冲突(git rerere可能有助于避免重复解决冲突)。这似乎过于复杂。


推荐阅读