How do I merge a specific commit from one branch into another in Git?
我有
但我只希望来自
有办法吗?
pro git书的第5章比我更好地解释了这一点,包括图表等。(关于再平衡的章节也是很好的阅读。)
最后,在另一个问题中,有一些关于樱桃采摘与合并与再平衡的好评论。
你可以选择想要的承诺。
我发现了如何选择多个承诺
我会做被接受的回答。
如果brancha没有被推到远程,那么您可以使用
1 2 3 4 5 | 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集成贡献的工作
另一种将引入的工作从一个分支转移到另一个分支的方法是Cherry-Pick。在Git中挑选一个樱桃就像一个提交的钢筋。它获取提交中引入的补丁,并尝试在当前所在的分支上重新应用它。如果一个主题分支上有许多提交,并且您希望只集成其中的一个,或者如果一个主题分支上只有一个提交,并且您更愿意选择它而不是运行rebase,那么这非常有用。例如,假设您有一个这样的项目:
。
如果要将commit e43a6拉入主分支,可以运行
1 2 3 4 | $ 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中引入的相同更改,但您将得到一个新的commit sha-1值,因为应用的日期不同。现在您的历史如下:
氧化镁
现在,您可以删除主题分支并删除不想提交的提交。