gpt4 book ai didi

git - 结合 GIT 中 merge 分支的历史记录?

转载 作者:太空狗 更新时间:2023-10-29 14:28:44 25 4
gpt4 key购买 nike

在我的 git 存储库中,我已将分支“B” merge 到“master”中,得到以下结构:

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

我现在想 merge 分支以获得以下历史记录:

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

我该怎么做?

问候,乔臣

最佳答案

我假设 C 是 merge 提交,这就是您不想在结果中包含它的原因。

做你想做的事,你需要的是git rebase

让我们从另一个示意性提交图开始。离开原来的分支完好无损,我们将在一个名为 rebasing

的新分支上进行操作
git checkout -b rebasing master

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

只需将 topicrebasing 之间的所有内容 rebase 到 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)

现在,当我们只看 rebase 时,我们有一条从AD的直线。

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

所以,现在唯一的问题可能是顺序与你期望的。您可以通过使用 git rebase 重新排序提交来轻松解决这个问题
--interactive
,如果你愿意的话。

或者您以稍微复杂的方式对所有内容进行 rebase 。让我们重新开始。

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

首先把所有从 Cmaster 的尖端(又名。D)放在topic 的提示(又名。H):

git rebase --onto topic C master

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

最后一次 rebase ,到最后,我们就完成了。

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 - 结合 GIT 中 merge 分支的历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1474959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com