获取当前分支的最后N个提交并将它们应用于另一个分支

Jor*_*dez 3 git github git-branch

这是我的情景:

  • 我在master分公司
  • master分支机构feature1开始创建分支
  • 添加了几个提交,并添加了feature1其他提交master
  • 现在,我要带ONLY最后N从提交feature1并应用它们master.

我想离开这个:

                       (branch) feature1: f1 > f2 > f3 > f4
                      /
(branch) master: A > B > C > D
Run Code Online (Sandbox Code Playgroud)

对此:

                       (branch) feature1:  f1 > f2 > f3 > f4
                      /
(branch) master: A > B > C > D > f3 > f4
Run Code Online (Sandbox Code Playgroud)

kus*_*men 6

您可以通过运行来观察提交的最后一个哈希值

git log -N 其中N是您想要查看的提交哈希数.

然后你就可以做到

git cherry-pick {firstHash}^..{lastHash}其中,{firstHash}{secondHash}开始点和结束你的樱桃采摘,它像闭区间[firstHash,lastHash]点,因此所有犯之间将被视为好.

注意: 出于显而易见的原因,firstHash必须提前lastHash.

如果你不想让它们被提交,而你只想要它们的内容就可以了

git cherry-pick {firstHash}^..{lastHash} --no-commit

在你的情况下,如果我们考虑(f1,f2 ..)是提交哈希值,这应该进行练习:

git checkout master
git cherry-pick f3^..f4
Run Code Online (Sandbox Code Playgroud)

如果有任何合并冲突,你将不得不解决它们并调用git cherry-pick --continue(有时git bash对此很顽固,并且它没有告诉你)能够继续进行下一次提交.

在任何情况下,您都应该查看@Erhan提到的樱桃选择文档 - https://git-scm.com/docs/git-cherry-pick

  • 有效!通过使用`--no-commit`,`cherry-pick`将来自`feature1`的所有提交组合在一起,并将其添加到`master`的顶部.如果不使用`--no-commit`,则所有提交都会添加到`master`之上,以及合并提交. (2认同)
  • `gitcherry-pick -Nbranch_name` 也帮助我从branch_name 中挑选了前几个 `N` 提交。 (2认同)