git cherry-pick多次提交

时间:2012-11-16 18:23:57

标签: git

  

可能重复:
  How to cherry pick a range of commits and merge into another branch

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

2 个答案:

答案 0 :(得分:11)

  

git cherry-pick $ from_sha .. $ to_sha

答案 1 :(得分:0)

手动执行此操作的方法(无需挑选)


从您的分支机构的头部创建一个新的分支,其中提交位于git branch newB

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


方法1

在第一次提交git reset --mixed <shaId of the mentioned commit>

之前直接对提交执行混合重置

对此“已修改”代码进行存储,以便提交1到19 git stash

转到你想要应用这个手动樱桃选择的地方并做一个流行git checkout <dstBranch>&amp;&amp; git stash pop


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

在第一次提交git reset --hard <shaId of the mentioned commit>

之前对提交进行硬重置

与reflogs之前的状态git merge --squash HEAD@{1}

进行压缩合并

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

现在你有了你的提交,樱桃选择这个提交到你想要的地方。它具有所有想要的提交消息的好处。


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