7

可能重复:
如何挑选一系列提交并合并到另一个分支

我想从一个分支中挑选 19 个提交并将它们应用到另一个分支。所有提交都是顺序的(提交 1,提交 2 ... 提交 19),并且最后一次提交不是最近的提交(即,在它之后还有其他提交,我不想应用其更改)。如何在不git cherry-pick为每次提交输入的情况下将更改应用到分支?

4

2 回答 2

13

git cherry-pick $from_sha..$to_sha

于 2012-11-16T19:59:27.997 回答
0

一种手动完成的方法(无需采摘樱桃)


从提交所在的分支的头部创建一个新分支git branch newB

将此新分支硬重置为最后一次提交git reset --hard <shaID of Commit19>


方法一

在第一次提交之前直接对提交进行混合重置git reset --mixed <shaId of the mentioned commit>

在这个“修改过的”代码上做一个隐藏,只有提交 1 到 19git stash

转到您要应用此手动樱桃采摘的地方并弹出git checkout <dstBranch>&&git stash pop


方法2(此方法将保留提交消息)

在第一次提交之前对提交进行硬重置git reset --hard <shaId of the mentioned commit>

与 reflogs 先前的状态进行压缩合并git merge --squash HEAD@{1}

现在您将看到提交 1 - 19 将被编入索引,如果您进行提交,则提交消息将预先填充所有单独的提交消息...允许您根据需要修改消息

既然您已经提交了,请在您想要的地方挑选这个提交。它的好处是拥有所有想要的提交消息。


完成后 删除临时分支以摆脱您为进行内部选择所做的所有垃圾git branch -D newB

于 2012-11-16T20:06:39.643 回答