我有BranchA
这是113提交BranchB
之前提交。如何在Git中将特定的提交从一个分支合并到另一个分支?
但我只希望BranchA
的最后10个左右的提交合并为BranchB
。
有没有办法做到这一点?
我有BranchA
这是113提交BranchB
之前提交。如何在Git中将特定的提交从一个分支合并到另一个分支?
但我只希望BranchA
的最后10个左右的提交合并为BranchB
。
有没有办法做到这一点?
git cherry-pick <commit>
命令允许您从任何分支中进行单次提交,并且实质上在您的工作分支中重新绑定它。
Chapter 5 of the Pro Git book explains it better than I can,完整的图和等;查找标题为“重新激活和樱桃采摘工作流程”的部分。 (The chapter on Rebasing也是不错的阅读。)
最后,还有一些good comments on the cherry-picking vs merging vs rebasing in another SO question。
问题:说commit'A'从'master'分支出来,你做了一些工作,通过'E'创建子提交'B'。说'E'只有'D'加了1行。如果你把'E'樱花选到''master',它是否应用*所有*从'A'到'E'到'master'分支的变化,或者它只会*应用从'D'变化到'E',即它只增加了1行到'master'?如果是前者,我如何实现后者? (除了手动复制和粘贴) – chharvey 2014-03-25 10:44:31
git cherry-pick -n
你可以添加细节?我不熟悉那个术语 – NullVoxPopuli 2011-06-16 12:50:41
@thelindyhop即时通讯寻找他们 – hvgotcodes 2011-06-16 12:51:59
@thelindyhop为什么你不只是rebasing? – hvgotcodes 2011-06-16 12:53:23
如果BranchA未被推送到远程,那么您可以使用rebase
然后简单merge
来重新排序提交。如果可能,最好在之上使用merge
,因为它不会创建重复的提交。
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值,因为应用的日期不同。现在你的历史看起来是这样的:
现在你可以删除你的主题分支,放弃你不想在拉提交的
可能重复[如何合并特定提交英寸git](http://stackoverflow.com/questions/881092/how-to-merge-a-specific-commit-in-git) – chharvey 2014-03-25 10:32:27