合并除一个之外的所有提交的最佳方法
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 选择一系列提交?我不喜欢这两种方法,还有其他方法吗?
假设您在接受分支上,进行交互式变基并交换最后两次提交。
git rebase -i HEAD~2
在编辑器中,交换提交 12345 和 54321。结果应如下所示:
pick 12345 ...
pick 54321 ...
保存并关闭编辑器。
将验收分支的倒数第二个提交合并到 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)
我们或多或少地使用 git 流程作为我们的工作流程。我们在验收中有一堆承诺。我们现在需要将大部分提交从验收发布到主控,但还有一个仍然需要业务方的验收,我们将不得不等待另一次部署 window.
要合并的提交示例:
12345
54321 <- don't want to merge this just yet
78945
54789
所以我想合并 acceptance -> master 但避免合并 54321.
这里有什么最佳选择?恢复? Cherry 选择一系列提交?我不喜欢这两种方法,还有其他方法吗?
假设您在接受分支上,进行交互式变基并交换最后两次提交。
git rebase -i HEAD~2
在编辑器中,交换提交 12345 和 54321。结果应如下所示:
pick 12345 ... pick 54321 ...
保存并关闭编辑器。
将验收分支的倒数第二个提交合并到 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)