挑选和压缩一系列提交到子目录或子树中


76

我怎样才能告诉Cherry-pick挑选一系列的提交?

或者换句话说,将两次提交之间的差异应用于存储库的当前状态?

下面确实没有工作(摘樱桃没有--squash选项):

git cherry-pick --squash e064480..eab48b59c

注意:我的用例在子树场景中-在任何人开始争论我不应该压榨之前。

以下工作,但然后我有一系列单独的提交。之后,我可以使用交互式变基手动压扁它们。

git cherry-pick -X subtree=vendor/package e064480..eab48b59c

有什么方法可以将壁球作为摘樱桃的一部分吗?

Answers:


110

传递-ngit cherry-pick。这将应用所有提交,但不提交。然后,只需git commit在一次提交中提交所有更改即可。


2
如果在精心挑选的提交范围内存在多个冲突怎么办?
Sazzad Hissain Khan

6
@SazzadHissainKhan,虽然我很确定它会以相同的方式工作(即,您解决每个冲突,然后使用git cherry-pick --continue),但-n在这种情况下,最安全的做法是省去它,以便在操作完成后可以查看每个个人确认并确认一切都很好。然后,您可以通过交互式变基来压缩它们。
David Deutsch

1
就我而言,我已经选择了一个提交,并且想要压缩另一个提交以解决第一次提交引入的错字。因为我没有选择第二个提交,所以我用-n选项(--no-commit)挑选了它,然后用编辑了第一个提交git commit --amend --no-edit(no-edit选项重新使用了第一次提交的提交消息,而不提示输入新的一个)。
CodeManX

0

跟随主人=>樱桃从另一个分支中选择两次提交

git checkout主

git cherry-pick:1

git cherry-pick:2

git reset --soft HEAD〜2(樱桃选择提交的次数,即2)

git添加

git提交


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.