如何排查Azure Repos中拉取请求的合并冲突原因
Git合并冲突排查方案
冲突核心原因
你的情况里冲突跑不出两个方向:
- FileB内容冲突:你在FeatureB改完FileB推送到远程后,Master分支也对FileB做了修改(毕竟你在Master执行了
git add .和commit),两边对同一文件的同一段内容改得不一样,Git没法自动合并。 - FileA存在性冲突:FeatureB是从Master切出来的,之后Master新增了FileA,但FeatureB里一直没这个文件。合并时Git对“要不要保留FileA”的判断出现矛盾,也会触发冲突。
本地快速排查步骤
- 先拉取远程最新代码到本地:
git checkout master git pull origin master git checkout FeatureB git pull origin FeatureB - 尝试本地合并Master到FeatureB,直接看冲突细节:
执行完Git会明确告诉你哪个文件冲突,打开冲突文件能看到用git merge master<<<<<<<、=======、>>>>>>>分隔的两边修改内容,一眼就能看明白冲突点。 - 如果是FileA的问题,Git会提示类似“deleted by us”或“added by them”的字样,说明两边对这个文件的存在状态不一致。
Azure Repos上的排查方法
在拉取请求页面找冲突标签,里面会列出所有冲突文件,点进去就能看具体冲突内容。要是是文件存在性冲突,会直接显示“文件在一个分支存在,另一个分支不存在”的提示。
冲突解决建议
- FileB内容冲突:直接编辑冲突文件,留下你需要的内容,删掉Git的冲突标记后提交就行。
- FileA存在性冲突:要保留FileA的话,就在FeatureB分支执行
git checkout master -- FileA把文件拉过来再提交;不需要的话,就在Master分支删掉FileA再合并。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

