多次提交的樱桃拣选

33

我在主分支中有33个提交混在一起。现在我需要整理记录。所以我创建了特性分支,尝试将这些33个提交归类到不同的特性分支中。那么是否可以一次选择多个提交并复制到相关的特性分支中?当我用cherry-pick命令选择多个提交时,我也遇到了冲突。

git cherry-pick A B C

这里A、B、C是提交记录的哈希码。


2
嗯,问题在哪里? - silvio
@silvio:问题是如何选择多个提交?我现在的做法是否正确,如果是,那么如何解决cherry-picking冲突。 - Nitu Dhaka
啊啊啊 - 是的,你做得很正确 :-) - silvio
5
如果这33个提交是连续的,你可以使用 git cherry-pick A^..B。(其中A为第一个提交,B为最后一个提交) - pktangyue
另外,A、B、C按它们出现的顺序(从左到右)应用。 - Shanimal
2个回答

25
你做得很正确。简介是:
git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] <commit>...

git cherry-pick 命令按照提交记录从左到右进行操作,您可以根据需要进行排序。 如果出现冲突,您有三个选择。您可以使用 git cherry-pick --quit 命令(停止 cherry-pick 操作并保留当前状态),git cherry-pick --abort 命令(停止 cherry-pick 操作并重置分支到操作前的状态)或者使用编辑器或者 git mergetool 解决冲突,然后使用 git cherry-pick --continue 命令继续进行下一个提交操作。


4
谢谢提到 git cherry-pick --continue 命令来处理挑选多个提交时的冲突问题,给你点赞! - JK ABC

6
如果您希望保持记录整洁,最好创建一个主题分支并运行 git rebase -i <33号提交之前的提交>,进行交互式变基。按照删除提交的说明操作。这比按特定严格顺序挑选许多提交要简单得多。

理想情况下,交互式变基应该在您的特性分支中进行,重写开发或主分支的历史记录必须小心处理。 - Asanka Siriwardena
理想情况下,将提交列表存储起来,按不同的分支进行排序,然后从文件中加载交互式变基的相应列表。这样可以避免出现您不知道特定提交是否已经处理的情况。 - cmaster - reinstate monica

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