在我的git仓库,我已经合并分支“B”到“主人”,得到如下结构:
--> A --> B --> C --> D (branch master)
| |
F --> G --> H (branch B)
我现在想的树枝相结合,得到下面的历史:
--> A --> B --> F --> G --> H --> D
我怎样才能做到这一点?
问候,约亨
在我的git仓库,我已经合并分支“B”到“主人”,得到如下结构:
--> A --> B --> C --> D (branch master)
| |
F --> G --> H (branch B)
我现在想的树枝相结合,得到下面的历史:
--> A --> B --> F --> G --> H --> D
我怎样才能做到这一点?
问候,约亨
我认为C
是一个合并提交,这就是你不想把它在你的结果的原因。
你所需要的,做你想要什么,什么是git的重订
让我们开始的又一示意提交图表。 离开原来的树枝完整,我们将在一个新的分支称为操作rebasing
git checkout -b rebasing master
--> A --> B------------------- --> C --> D (branch master) (branch rebasing)
\ /
+----+-> F --> G --> H -+ (branch topic)
只是变基之间的一切topic
和rebasing
到topic
。
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
,我们有一个直线的形式A
到D
。
-> 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)
我会从一个分支,然后樱桃所需的提交挑
所以:
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