git - 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
)只是不支持它。
解决方案
一旦您确定要交付的特性同时需要分支 1 和分支 2,一个可能的前进路径是合并两个分支,并且从现在开始只使用特性。
每当您需要使其保持最新时,您只会重新设置功能。
如果没有,您将需要重复合并到功能,如果功能有自己的提交影响两个分支的代码,这可能会出现问题:可能会发生冲突(git rerere
可能有助于避免重复解决冲突)。这似乎过于复杂。