2010-08-12 194 views
2

我有一系列的叉子提交,我想一次应用或拒绝一个叉子到我的叉子。我应该使用git cherry-pick吗?如何在git中一次提交一系列提交?

+0

'cherry-pick'只能在一次提交时执行; “樱桃”适用于一系列作品。 – 2010-08-12 15:14:28

+0

参见http://stackoverflow.com/questions/1670970/how-to-cherry-pick-multiple-commits – 2010-08-12 16:10:38

+0

@jleedev你应该更新你的git install。 git cherry-pick现在允许提交范围和多个提交。 – wilhelmtell 2010-08-12 18:23:07

回答

4

我会使用一个交互式的rebase此:

git rebase -i master fork-branch 

当Git会询问你想与每个提交的做什么,告诉它编辑为所有这些(搜索和替换挑 - >编辑)。保存并退出,交互式底图将通过提交,在每个提示处停下来让你做你的事情。做你的测试,决定是否要保留它。如果你这样做,只需运行git rebase --continue即可进入下一步。如果您不这样做,请运行git reset --hard HEAD^重置为之前的提交,丢弃您不想要的那个,然后转到git rebase --continue

如果您立即知道您不需要的提交,则可以将它们从列表中删除,而不是更改选择以进行编辑。当然,如果我完全误解了,并且你不需要做任何测试,那么你几乎可以忽略前面的段落,并通过有选择地删除行来完成。

+0

我认为这正是我想要的。 – 2010-08-12 15:26:06

+0

@Chas。欧文斯:太棒了!另外,你可能知道这一点,但如果你不想实际移动fork分支,或者如果它是一个你不能真正移动的远程分支,那么你应该在该点创建另一个分支来重新绑定。 – Cascabel 2010-08-12 15:54:14

+0

当git-rebase没有提到任何有关URL的内容时,我很快就明白了这一点。 – 2010-08-12 17:47:06

0

是的。 git cherry-pick COMMIT_SHA将允许你抓住一个特定的提交。不过,你不需要拒绝提交。只是不要挑选他们。

+0

作为git的新手,这种事情让我感到困惑。如果我忽略了几次提交,我会不会被迫彻底挑选它们?就像我在下一次合并时,是不是想将这些被忽略的提交与任何新提交合并? – Hans 2010-08-12 16:11:06

+1

@Hans:你对下一次合并是正确的,所以一般来说,选择性樱桃采摘是为你不知道的情况保留的,决不会合并另一个分支。你应该理想的设计你的分支,这样你就不必挑选樱桃。例如,请参阅上一个问题的答案(并且不要错过评论中的链接!)http://stackoverflow.com/questions/3419689/understanding-git-cherry-pick/3420792#3420792您也可以搜索SO了解有关工作流的信息,或者发布一个新问题,如果您想了解更多信息。 – Cascabel 2010-08-12 16:48:28

+0

@Jefromi - 好吧,但是如果你是高手试图合并origin/master,那么你基本上需要最终完成这一切?肯定是赞成重分支/合并的论点(当然,这是一个出色的工作流程,但我无法将我的svn过去) – Hans 2010-08-12 20:54:35

相关问题