结合合并分支历史GIT?(Combining history of merged branches

2019-08-16 20:02发布

在我的git仓库,我已经合并分支“B”到“主人”,得到如下结构:

--> A --> B --> C --> D  (branch master)
    |           |  
    F --> G --> H        (branch B)

我现在想的树枝相结合,得到下面的历史:

--> A --> B --> F --> G --> H --> D

我怎样才能做到这一点?

问候,约亨

Answer 1:

我认为C是一个合并提交,这就是你不想把它在你的结果的原因。

你所需要的,做你想要什么,什么是git的重订

让我们开始的又一示意提交图表。 离开原来的树枝完整,我们将在一个新的分支称为操作rebasing

git checkout -b rebasing master

--> A --> B------------------- --> C --> D         (branch master) (branch rebasing)
     \                           /
      +----+->  F --> G --> H -+                   (branch topic)

只是变基之间的一切topicrebasingtopic

git rebase --onto topic topic rebasing

或做同样以较短的命令

git rebase topic

-> A -> B -----------------> C -> D                (branch master)
    \                      /
     +---+>  F -> G -> H +                         (branch topic)
                          \
                           +---------> B -> D      (branch rebasing)

现在,当我们只是看rebasing ,我们有一个直线的形式AD

-> A -> F -> G -> H -> B -> D                      (branch rebasing)

所以,现在唯一的问题可能是,顺序是从您所期望的不同。 你可以很容易地解决这个问题的重新排序与承诺git rebase --interactive ,如果你想。

或者你变基在一个稍微复杂一点的方式应有尽有。 我们重来。

--> A --> B------------------- --> C --> D         (branch master) (branch rebasing)
     \                           /
      +----+->  F --> G --> H -+                   (branch topic)

一是采取一切从C到尖master (亦称D ),并把它的尖端topic (亦称H ):

git rebase --onto topic C master

-> A -> B ----------------> C -> D                (branch master)
    \                      /
     +----> F -> G -> H +                         (branch topic)
                          \
                           +---------> D           (branch rebasing)

最后一个变基,在结束了,我们就完成了。

git rebase B

     +----> F -> G -> H +                         (branch topic)
    /                     \
-> A -> B ----------------> C -> D                (branch master)
         \
          +------------------------> F -> G -> H -> D   (branch rebasing)

瞧!

-> A -> B -> F -> G -> H -> D                      (branch rebasing)


Answer 2:

我会从一个分支,然后樱桃所需的提交挑

所以:

git checkout -b my-branch A
git cherry-pick B
git cherry-pick F
git cherry-pick G
git cherry-pick H
git cherry-pick D


文章来源: Combining history of merged branches in GIT?
标签: git merge branch