You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git dev/stage/production分支部署流程的合并冲突解决方法

解决Git分支策略中的合并冲突与MR干净性问题

核心问题拆解

你的问题出在feature分支合并了dev的所有变更,导致向stage提MR时混入了不属于当前feature的内容。本质是feature分支的基线被污染了,原本应该基于stage,结果变成了基于dev的混合分支。

具体解决方案

1. 撤销已污染的feature分支(如果已经合并了dev)

如果你的feature分支已经合并了dev,先把这部分无关变更去掉:

# 查看提交日志,找到合并dev到feature之前的那个提交哈希(比如abc123)
git log --oneline
# 重置分支到合并前的干净状态
git reset --hard abc123

注意:如果已经推送到远程仓库,需要强制推送:git push -f origin <你的feature分支名>,确保团队成员同步这个操作。

2. 调整QA测试的分支流转方式(避免污染feature基线)

不要直接把dev合并到feature,改用临时中转分支处理QA测试:

  • 从你的feature分支拉一个临时分支:git checkout -b temp-feature-qa
  • 把dev分支合并到这个临时分支,解决所有冲突:git merge dev
  • 提交这个临时分支到dev的MR,用于QA测试
  • QA通过后,回到原feature分支,把它变基到最新的stage分支:git rebase stage
  • 此时向stage提MR,feature分支只会包含你自己的开发变更,不会带dev的其他内容

3. 日常开发保持feature分支纯净

  • 开发过程中,定期把feature分支变基到最新的stage分支:git rebase stage,提前解决和stage的冲突,避免后期批量冲突
  • 永远不要直接合并dev到feature分支,保持feature的基线始终是stage

4. 处理无法变基的极端情况

如果因为代码改动太大,变基会产生大量冲突,可以用cherry-pick提取当前feature的提交到干净分支:

# 从最新的stage拉一个新的干净分支
git checkout -b clean-feature stage
# 把原feature分支的所有提交哈希列出来,逐个cherry-pick到新分支
git cherry-pick <提交哈希1> <提交哈希2> ...
# 解决每个cherry-pick的冲突,完成后用这个干净分支提MR到stage

优化后的工作流建议

把你的流程调整为:

  1. 从stage分支创建feature分支
  2. 开发期间定期git rebase stage同步基线
  3. 拉临时分支合并dev,提交到dev做QA测试
  4. QA通过后,将原feature分支rebase stage,提交到stage的MR
  5. 发布阶段提交stage到production的MR

内容的提问来源于stack exchange,提问作者artbandin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:05:17