我有两个分支机构。一个是从master分叉的,第二个是从master分叉的,但取决于第一个分支的变化。我想提交我的第一个分支进行审核。批准后,它将被重新授予主人。
有没有办法在没有master中的第一个变更集的情况下开始在第二个分支上工作?我最初的想法是从第一个分支重新定义第二个分支,然后当第一个分支重新定位到主分支时,将第二个变换集重新设置为主分支。这可行吗?如果没有,那么正确的方法是什么?
答案 0 :(得分:2)
免责声明:这假设Branch2
是您的存储库的本地存储,或者它是公开的,但没有其他人可以从中进行处理。如果有人试图对其进行操作并且您执行下面的操作,则可能会引起各种麻烦。
您应该能够使用rebase
命令的--onto
参数完成分支操作。它非常强大,并且可以让你(至少尝试)在几乎任何其他提交的基础上移动任何范围的提交。
根据您的情况,我们假设您有一个类似于此的图表
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在顶部和底部之间不断跳跃。
答案 1 :(得分:0)
如果你的意思是你需要从分支2中的分支1进行更改,你可能只想把你需要的更改从分支1 git cherry-pick转移到分支2中。这正是你正在寻找的需要任何复杂的rebase方案。
答案 2 :(得分:0)
您似乎正在使用gerrit进行代码审查。
你可以这样做:
当分支1被提交并合并到回购中时,您可以这样做:
git fetch origin
并直接重新绑定来自branch1的更改,例如git rebase origin / master
BR, 添