可能重复:
How to cherry pick a range of commits and merge into another branch
我想从一个分支中挑选19个提交并将它们应用到另一个分支。所有提交都是顺序的(提交1,提交2 ...提交19),最后一次提交不是最近的提交(即在其之后还有其他提交,我不想应用它们的更改)。如何在不为每次提交键入git cherry-pick
的情况下将更改应用于分支?
答案 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