从主分支变基到其他分支

3
我在我的提交历史记录中发现了一些错误。我使用这些步骤进行更正并解决了所有冲突。现在我的主分支没有问题了。但是我有另一个分支,我们称其为“分支1”: enter image description here 我想将应用于主分支的更改也应用于分支1。我已经在橙色提交处进行了更改。我已经解决了直到主分支的最后一次提交的所有冲突。如何将这些更改也应用于分支1?

可能有更优雅的方式,但如果你在Branch 1上真的只有3-4个唯一的提交,我建议从主干上创建一个新分支,并将这4个提交选中到新分支。 - fzzfzzfzz
1
有150多个提交记录...如果我合并回branch1,我不想出现任何问题。我不是Git专家,所以不知道合并回主分支是否会引起任何问题... - Florian
2
我认为 rebase --onto 可以帮助你。 - Ôrel
你应该有三个分支。新主分支,旧主分支和 git rebase --onto master old_master branch1 命令将获取 old_master 和 branch1 之间的所有提交并将它们放在主分支上。查看 git rebse --help 命令,你会发现很多细节。 - Ôrel
我对这个图表有点困惑,因为按照所画的方式,橙色提交中的更改确实在分支1上,因为分支1是从一个后代提交派生而来,而该后代提交又是从橙色提交派生而来的。 - Adam Parkin
显示剩余3条评论
2个回答

1
在这里做出了很多假设。让我们重新绘制您的当前历史记录,以便更容易地讨论它:
     .-D'-E'      -- master' (after rebase)
A-B-C-D-E         -- master  (before rebase)
         `F-G-H   -- branch1 (before rebase)

如果我理解正确,您的最终历史记录应该包括:

           .-F'-G'-H' -- branch1 (after rebase)
     .-D'-E'          -- master' (after rebase)
A-B-C-D-E             -- master  (before rebase)
         `F-G-H       -- branch1 (before rebase)

或者,隐藏旧的分支(在变基之前):
A-B-C-D'-E'           -- master  (after rebase)
          `F'-G'-'H   -- branch1 (after rebase)

您可以通过指定要变基的提交范围以及新上游来实现此操作:

git rebase --onto "E'" E branch1

这将复制所有提交记录E..branch1并在E'之上重新应用它们。

0

您可以挑选所需的提交记录。这是从其他分支获取更改的最佳方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接