【发布时间】:2014-01-17 01:11:53
【问题描述】:
假设我有一个本地 git 分支链,如下所示:
master branch1 branch2
| | |
o----o----o----A----B----C----D
我将上游更改拉入主分支:
branch1 branch2
| |
A----B----C----D
/
o----o----o----o
|
master
现在我 rebase branch1,给我这个:
branch2
|
A----B----C----D
/
o----o----o----o----A'---B'
| |
master branch1
请注意,由于分支 1 的变基,提交 A 和 B 已被重写为 A' 和 B'。
这是我的问题:现在我想重新设置分支 2。显而易见的语法是git rebase branch1 branch2,但这绝对行不通。我想要它做的只是在 branch1 上重新应用 C 和 D,但它会尝试协调 A 和 A' 并认为它们是冲突的。
这确实有效:
git rebase --onto branch1 branch2^^ branch2
这假设我知道 branch2 在之前的 branch1 ref 之外恰好有 2 次提交。
由于git rebase --onto 有效,是否有一个 1 行 git 命令将在新重新设置的分支 1 之上重新设置分支 2,这样我就不必确切知道分支 2 中有多少提交? (我想为中间参数指定一些魔术 ref 而不是 branch2^^。)
或者还有其他我忽略的方法吗?
我最感兴趣的是一种可以很好地扩展到极端情况的解决方案,而不仅仅是两个分支 - 假设我有更像 5 个本地分支的东西,全部相互链接,我想将所有这些分支重新组合在一起.
【问题讨论】:
-
在
branch1基础上重新设置master时是否有冲突?在一般情况下,git rebase branch1 branch2会按预期工作,但在某些情况下可能不会,例如,当您在master之上重新定位branch1时必须解决冲突。