将当前分支的最近N次提交记录应用到另一个分支上。

14

这是我的情景:

  • 我在 master 分支中
  • master 分支创建了 feature1 分支
  • 多次提交被添加到 feature1 和其他提交被添加到 master
  • 现在,我只想将 feature1 分支中最后的 N 次提交应用到 master 分支。

我希望从这个状态转换成:

                       (branch) feature1: f1 > f2 > f3 > f4
                      /
(branch) master: A > B > C > D

转为:

                       (branch) feature1:  f1 > f2 > f3 > f4
                      /
(branch) master: A > B > C > D > f3 > f4
2个回答

26

您可以通过运行 git log -N 命令来查看最近的提交哈希值,其中 N 是您想要查看的提交哈希值的数量。

然后,您可以执行 git cherry-pick {firstHash}^..{lastHash} 命令,其中 {firstHash}{secondHash} 是 cherry-picking 的起始点和结束点,就像是闭区间 [firstHash,lastHash] 一样,因此之间的所有提交也将被包含在内。

注意:显然,firstHash 必须位于 lastHash 之前。

如果您不想将它们提交,而只需要它们的内容,您可以运行 git cherry-pick {firstHash}^..{lastHash} --no-commit 命令。

如果您的情况中(f1,f2...)是提交哈希,则应该使用以下命令:

git checkout master
git cherry-pick f3^..f4

如果有任何合并冲突,你需要解决它们并调用git cherry-pick --continue(有时候git bash会很顽固,并且不会向您显示)才能继续进行下一个提交。

无论如何,您应该像@Erhan提到的那样检查cherry pick的文档 - https://git-scm.com/docs/git-cherry-pick


3
好的,我会尽力进行翻译。以下是翻译的内容:成功了!通过使用--no-commitcherry-pickfeature1中的所有提交合并为一个,并将其添加到master的顶部。如果不使用--no-commit,则所有提交都将与合并提交一起添加到master的顶部。 - Jorge E. Hernández
2
git cherry-pick -N branch_name 对我来说也很有效,可以从 branch_name 中挑选出前 N 个提交。 - Hi-Angel
1
@Hi-Angel 太棒了,它救了我的命。 - liuliang

0

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