假设我的 Git 存储库最初有两个分支:Foo 和 Bar。
... ─ Foo
... ─ Bar
我创建了第三个分支 FooBar,在其中提交了其他两个分支的合并。
... ─ Foo ──┐
FooBar
... ─ Bar ──┘
FooBar 现在比 Foo 和 Bar 都领先一项。接下来,我做了更多工作,仅在 Foo 上提交了几次。
... ── A ───┬── B ── C ── D ── Foo
FooBar
... ─ Bar ──┘
问题是:由于分支 FooBar 的第一个父级不再是 Foo,我是否可以重新调整分支 FooBar 中的合并提交,以再次将 Foo 和 Bar 作为其两个父级?换句话说,我可以将 Foo 中的开发与未更改的 Bar 一起合并到之前合并的 FooBar 中吗?
... ── A ── B ── C ── D ── Foo ──┐
FooBar
... ─ Bar ───────────────────────┘
我意识到这是一个相当古老的话题,但由于我在面临类似的情况时发现了这个问题,所以我也可以告诉我最终使用了什么。
git checkout FooBar
git rebase -p --onto Foo A
我尝试使用原始问题中的名称。特别注意的是A
表示在 ascii art 中标记为 A 的提交。您可能会使用提交的哈希值或任何其他方式来指向分支所在的提交Foo
and FooBar
原本是分开的。
The -p
标志也被称为--preserve-merges
它的作用几乎就是它所说的。
请注意,分支Bar
在这里不起作用,因此提交行可能是命名分支,也可能不是 - 这没有区别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)