将最新的提交从主分支复制到分支

9

图片中展现的情况是:绿色分支是主分支。如何将主分支最后3次提交复制到粉色分支,但不影响主分支?

2个回答

13
git checkout <name of pink branch>
git merge master

这将完全按照您的需求操作(将来自master的三个提交合并到粉色分支中,但保留master本身不变)。


请注意,这将导致非线性历史记录,这并不一定是好的。其他选项是使用“cherry-pick”,或者更恰当地将粉色分支“rebase”到主分支。 - Alexander Gladysh
1
非线性历史是可以接受的;Git旨在处理本质上是非线性的历史。对于那些没有深入了解Git内部机制的人来说,变基往往会引起更多问题而不是解决问题。 - Amber
@AlexanderGladysh:非线性历史有什么问题吗?它准确地呈现了更改的过程。 - CB Bailey
我并没有说非线性历史记录在所有情况下都是不好的。然而,它有其权衡,就像变基一样。在我看来,一个合适的答案应该列出所有选项,并允许OP根据他的工作流程选择需要的选项。 - Alexander Gladysh
1
@CharlesBailey:就我个人而言,我不同意。在概念上和实践上,没有必要引入更复杂的历史重写工具,因为最简单的答案已经足够了。非线性历史是开发过程中的一个事实。记录人为线性历史只有在某些情况下才有用或必要。 - CB Bailey
特别是因为没有关于其他分支是否是共享分支等外部上下文 - 变基在某些情况下可能会导致重大的其他问题,而合并则完全安全。 - Amber

10
如果你的意思是希望你在创建分支时等待一段时间(这是个个人项目的分支),你可以从"pink"分支使用git rebase master。这将弹出粉色提交,将pink移动到29934b6,然后重新应用补丁。
否则,Amber的git merge可能是最好的答案。
另一个可能性是(同样来自"pink")对于每个更改使用git cherry-pick 9a51fd2; ...。 这将在 pink 上做出单独的新提交。 你也可以将这些分支命名为mastermaster^master^^

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