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

Azure DevOps中如何将development分支的增量变更合并到main分支?

解决Git Flow分支策略下的增量合并冲突问题

问题根源

你遇到的冲突本质是分支历史关联性断裂:如果第一次将development合并到main时使用了压缩合并(Squash Merge),main会生成一个全新的压缩提交,而development仍保留原始的多提交历史。Git在第二次合并时,会以两个分支的最初分叉点(空仓库的初始提交)作为共同祖先进行对比,误将已合并过的文件创建提交视为未合并的变更,从而触发冲突。

解决方案

1. 调整合并策略(推荐长期方案)

在Azure DevOps的Pull Request设置中,将development合并到main的策略改为**「创建合并提交(Create a merge commit)」**,禁用「压缩提交(Squash commit)」:

  • 该方式会在main上生成一个明确的合并节点,让Git能识别出两次合并之间的增量变更范围,下次合并时只会处理development上上次合并后的新提交。
  • 操作路径:Azure DevOps仓库 → Pull Requests → 打开目标PR → 「完成」按钮旁的设置 → 选择「Create a merge commit」。

2. 修复已断裂的分支历史(针对已用压缩合并的场景)

如果已经完成了压缩合并导致历史不一致,可通过变基将development的增量提交重新基于main的最新状态:

# 拉取远程最新分支
git fetch origin

# 切换到development分支
git checkout development

# 将development变基到main的最新提交上,仅保留上次合并后的增量变更
git rebase origin/main

# 若变基中出现冲突,手动解决后执行:
git add .
git rebase --continue

# 变基完成后,推送到远程(需强制推送,提前告知团队协作成员)
git push origin development --force-with-lease

之后再发起development到main的PR,即可正常合并增量变更。

3. 预合并同步(临时应急方案)

每次合并development到main前,先将main的最新代码同步到development,提前解决冲突:

# 切换到development分支
git checkout development

# 拉取main的最新代码并合并到development
git pull origin main

# 手动解决冲突(若有),提交变更
git add .
git commit -m "Sync main to development, resolve conflicts"

# 切换到main分支,合并development
git checkout main
git merge development

# 推送到远程
git push origin main

此方式确保development始终与main保持同步,合并时不会出现历史层面的冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:47:44