合并除一个之外的所有提交的最佳方法

Best way to merge all commits except one

我们或多或少地使用 git 流程作为我们的工作流程。我们在验收中有一堆承诺。我们现在需要将大部分提交从验收发布到主控,但还有一个仍然需要业务方的验收,我们将不得不等待另一次部署 window.

要合并的提交示例:

12345
54321 <- don't want to merge this just yet
78945
54789

所以我想合并 acceptance -> master 但避免合并 54321.

这里有什么最佳选择?恢复? Cherry 选择一系列提交?我不喜欢这两种方法,还有其他方法吗?

  1. 假设您在接受分支上,进行交互式变基并交换最后两次提交。

    git rebase -i HEAD~2
    

    在编辑器中,交换提交 12345 和 54321。结果应如下所示:

    pick 12345 ...
    pick 54321 ...
    

    保存并关闭编辑器。

  2. 将验收分支的倒数第二个提交合并到 master。

    git checkout master
    git merge acceptance~1
    

    之前:

     54789 - 78945 - 54321 - 12345 (acceptance)
      /
    11111 - 22222 (master)
    

    之后:

     54789 - 78945 - 12345 - 54321 (acceptance)
      /                \
    11111 - 22222 --- 33333 (master)