重新引入合并提交

ncc*_*ccc 12 git rebase

假设我的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 ????????????????????????

Aki*_*nen 12

我意识到这是一个相当古老的话题,但是因为我在面对类似的情况时发现了这个问题,我还可以告诉我到底使用了什么.

git checkout FooBar
git rebase -p --onto Foo A
Run Code Online (Sandbox Code Playgroud)

我试图使用原始问题中的名字.请特别注意,这A意味着在ascii art中标记为A的提交.您可能会使用提交的哈希值或任何其他方式指向分支FooFooBar最初分离的提交.

这面-p旗帜也被称为--preserve-merges,它的确如此.

请注意,分支Bar在这里不起作用,因此提交行可能是命名分支,或者不是 - 它没有任何区别.

  • 请注意,这不会保留合并提交中所做的任何更改. (3认同)
  • 谢谢,这对我们很有帮助.确实很重要的是要注意'A'是目标分支的最后一次提交,它仍然包含在原始合并中. (2认同)