繁体   English   中英

如何在Git中将特定提交从一个分支合并到另一个分支?

[英]How do I merge a specific commit from one branch into another in Git?

我有BranchA ,比BranchB提前113次提交。

但我只想将BranchA的最后10个提交合并到BranchB

有没有办法做到这一点?

git cherry-pick <commit>命令允许您进行单个提交(来自任何分支),并且实质上是在您的工作分支中对其进行rebase。

Pro Git书的第5章比我更好地解释了它 ,完成了图表等。 关于重印的章节也很好。)

最后, 在另一个SO问题中,对于挑选与合并与变基有一些好评

如果BranchA尚未被推送到远程,那么您可以使用rebase重新排序提交,然后简单地merge 在可能的情况下,最好使用merge over rebase ,因为它不会创建重复的提交。

git checkout BranchA
git rebase -i HEAD~113
... reorder the commits so the 10 you want are first ...
git checkout BranchB
git merge [the 10th commit]

消息来源: https//git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work

将介绍工作从一个分支转移到另一个分支的另一种方法是挑选它。 Git中的一个樱桃选择就像是单一提交的基础。 它需要在提交中引入的补丁,并尝试在您当前所在的分支上重新应用它。 如果您在主题分支上有许多提交并且您只想集成其中一个提交,或者如果您只在主题分支上有一个提交,并且您更愿意选择它而不是运行rebase,那么这非常有用。 例如,假设您有一个如下所示的项目:

在此输入图像描述

如果要将提交e43a6提取到主分支中,则可以运行

$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
 3 files changed, 17 insertions(+), 3 deletions(-)

这引出了e43a6中引入的相同更改,但是您获得了新的提交SHA-1值,因为应用的日期不同。 现在您的历史记录如下:

在此输入图像描述

现在,您可以删除主题分支并删除您不想提交的提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM