GitLab Flow中如何仅合并至特定Commit位置(禁用cherry-pick)
不使用cherry-pick合并指定连续提交的解决方案
针对你的场景(master分支包含从A到Z的完整提交链,需合并A至D的所有连续提交,且避免cherry-pick的历史追溯和重复提交问题),推荐以下两种可靠方法:
方法一:基于目标提交创建临时分支后合并
这种方法逻辑清晰,适配大多数场景:
- 切换到master分支并拉取最新代码:
git checkout master && git pull - 基于commit D创建临时分支:
git checkout -b temp/d-target D - 切换到生产分支(假设名为prod):
git checkout prod - 执行合并操作:
git merge temp/d-target
合并完成后,生产分支会包含A至D的所有提交,且保留完整的历史链,后续追溯和合并更新都不会有问题。合并完成后可删除临时分支:git branch -d temp/d-target
方法二:直接合并指定commit D(需满足前提)
如果你的生产分支当前的基线提交早于A(即生产分支与master的共同祖先在A之前),可以直接执行:
- 切换到生产分支:
git checkout prod - 合并commit D:
git merge D
Git会自动识别生产分支与D之间的差异,仅合并A至D的所有连续提交,不会包含D之后的内容。
这两种方法的优势
- 完整保留提交的历史关联,后续通过
git log可清晰追溯每个提交的来源 - 后续从master向生产分支合并更新时,Git能正确识别已合并的A至D提交,不会产生重复提交问题
内容的提问来源于stack exchange,提问作者남혁준
相关产品推荐
相关产品推荐

