从远程分支中挑选多个非连续提交的更改,合并到“主”分支的单个提交中。

3

enter image description here

我创建了一个主远程分支(A),然后将主分支作为分支(B)进行了分支。我在分支(B)上进行了三次提交。但我只想挑选来自提交1和提交3的更改,并将它们作为单个提交推送到我的主分支。有人能建议我如何处理这种情况吗?
4个回答

4
您可以简单地使用git cherry-pick-n选项,这将防止创建提交。
git cherry-pick -n commit1
git cherry-pick -n commit3
git commit

同时,您也可以一次挑选多个提交记录:

git cherry-pick -n commit1 commit3
git commit

我认为如果你需要在任何樱桃挑选中解决合并冲突,那么“-n”选项可能会有问题。 - Mort

2
git checkout master
git cherry-pick commit1
git cherry-pick commit3
git reset HEAD~2 --soft
git commit
git push origin master

更新:将HEAD^2更改为HEAD~2。

"HEAD^2" <-- 你的意思是 HEAD~2 吗? - jbu
@jbu 是的。谢谢你。我犯了一个错误。 - ElpieKay

0

进行两次cherry-pick,然后将这两个新的提交压缩成一个:

git checkout master
git cherry-pick commit1
git cherry-pick commit3
git rebase -i @~2

在您的编辑器中,选择第二个提交的“压缩”选项。编辑提交消息以符合您的喜好。

0
这是我所做的:

git checkout -b joined
git cherry-pick commit1 commit3
# fix potential merge conflicts
git checkout master
git merge --squash joined

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