在我的git存储库中,我将分支"B"合并到"master"中,获得以下结构:
--> A --> B --> C --> D (branch master)
| |
F --> G --> H (branch B)
Run Code Online (Sandbox Code Playgroud)
我现在想要组合分支以获得以下历史记录:
--> A --> B --> F --> G --> H --> D
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
此致,Jochen
我假设C是一个合并提交,这就是你不希望在你的结果中拥有它的原因.
你需要什么,做你想做的,就是git rebase
让我们从另一个原理图提交图开始.为了使原始分支保持完整,我们将在一个名为的新分支上运行rebasing
git checkout -b rebasing master
--> A --> B------------------- --> C --> D (branch master) (branch rebasing)
\ /
+----+-> F --> G --> H -+ (branch topic)
Run Code Online (Sandbox Code Playgroud)
只是变基之间的所有内容topic,并rebasing到topic.
git rebase --onto topic topic rebasing
Run Code Online (Sandbox Code Playgroud)
或者用较短的命令做同样的事情
git rebase topic
-> A -> B -----------------> C -> D (branch master)
\ /
+---+> F -> G -> H + (branch topic)
\
+---------> B -> D (branch rebasing)
Run Code Online (Sandbox Code Playgroud)
现在,当我们只看rebasing我们有一个直线的形式A来D.
-> A -> F -> G -> H -> B -> D (branch rebasing)
Run Code Online (Sandbox Code Playgroud)
所以,现在唯一的问题可能是订单与您的预期不同.git rebase
--interactive如果你愿意的话,你可以通过重新订阅提交来轻松解决这个问题.
或者你以一种稍微复杂的方式改变一切.我们重来.
--> A --> B------------------- --> C --> D (branch master) (branch rebasing)
\ /
+----+-> F --> G --> H -+ (branch topic)
Run Code Online (Sandbox Code Playgroud)
一是采取一切从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)
Run Code Online (Sandbox Code Playgroud)
最后一个最后一个,我们完成了.
git rebase B
+----> F -> G -> H + (branch topic)
/ \
-> A -> B ----------------> C -> D (branch master)
\
+------------------------> F -> G -> H -> D (branch rebasing)
Run Code Online (Sandbox Code Playgroud)
瞧!
-> A -> B -> F -> G -> H -> D (branch rebasing)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |