Git分支创建后发起TFS拉取请求出现异常合并冲突求助
我碰到过类似TFS+Git场景下的奇怪冲突问题,咱们一步步拆解你的情况,先从最可能的脚本逻辑漏洞说起:
首先修复脚本的分支同步逻辑
你的脚本里有个容易被忽略的流程问题:你在切换到development分支之前执行了git pull,这时候拉取的是当前所在分支(比如上次运行脚本后残留的feature分支)的代码,而非development分支的最新远程代码。哪怕你确定没人修改仓库,本地的development分支也可能和远程origin/development不同步(比如之前你在dev分支做过本地修改没推送、或者历史merge残留),这就导致新分支基于旧代码创建,和远程dev对比自然会出现“无理由”冲突。
调整后的脚本流程,确保基于最新远程dev创建分支:
# 进入代码仓库所在目录 echo "....Entering $dest" cd ~/IdeaProjects/$dest # 先切换到development分支 echo "....git checkout development" git checkout development # 拉取远程development的最新代码(确保本地dev和远程完全同步) echo "....git pull origin development" git pull origin development # 创建新分支 echo "....git checkout -b $branch" git checkout -b $branch # 第一次推送并关联远程分支(后续push无需重复指定参数) echo "....git push -u origin $branch" git push -u origin $branch # 执行修改操作 # ... # 添加已修改/新增的文件 echo "....git add ." git add . # 提交修改 echo "....git commit" git commit -m "modified domain object $fileList" # 推送到上游 echo "....git push" git push
其他可能导致“无理由冲突”的排查方向
如果修复脚本后还是出现问题,看看这几个TFS+Git的常见坑:
- 换行符自动转换冲突:TFS默认可能开启了
core.autocrlf自动转换换行符,本地和仓库的换行符规则不一致时,新增文件的换行符差异会被识别为冲突。可以用git config --get core.autocrlf检查配置,Windows环境建议设为true,Linux/macOS设为input,和仓库规则保持一致。 - TFS分支策略强制重新基准:部分团队的TFS分支策略会要求PR必须重新基准到最新dev,哪怕你的分支基于最新dev创建,系统可能因缓存误判。这时可以手动执行
git rebase origin/development后强制推送(用--force-with-lease更安全),再刷新PR页面。 - 本地Git索引异常:偶尔本地仓库的索引会出现缓存问题,导致提交有隐藏差异。可以尝试清理缓存重置:
git clean -fd && git reset --hard origin/development(注意:此命令会清除未提交修改,执行前请备份)。
内容的提问来源于stack exchange,提问作者user1539343
相关产品推荐
相关产品推荐

