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

如何解决分支文件删除与另一分支文件重命名引发的Git合并冲突?

解决Git合并冲突并恢复被删除+重命名路径的文件

这种情况我之前也碰到过——当你在分支里删了文件夹,而master把所有根文件夹重命名后,Git没法自动判断那些“被你删除但在master里换了位置”的文件该留还是该删,就会出现大量UU状态的冲突文件。别慌,用下面的步骤就能高效恢复这些文件:

步骤1:确认当前冲突状态

首先确保你已经执行过合并操作,现在处于冲突状态。可以先查看所有冲突文件:

git status --short | grep "UU"

这里的UU状态表示两边都对文件做了修改(你这边删除,master那边移动/重命名了路径),这些就是我们要恢复的目标文件。

步骤2:批量恢复master分支的版本

我们需要把这些文件恢复成master分支里的最新版本(也就是重命名后的正确路径下的文件),用--theirs参数指定取合并进来的分支(master)的版本:

git status --short | grep "UU" | awk '{print $2}' | xargs git checkout --theirs

解释一下这条命令:

  • grep "UU":筛选出所有冲突的文件
  • awk '{print $2}':提取出文件路径
  • xargs git checkout --theirs:把这些路径批量传给git checkout,恢复成master的版本

步骤3:暂存处理好的文件

恢复完成后,把这些文件加入暂存区:

git status --short | grep "UU" | awk '{print $2}' | xargs git add

或者直接用git add .(如果没有其他需要手动处理的冲突文件的话)

步骤4:完成合并

最后提交合并结果即可:

git commit

如果之前合并已经生成了默认的提交信息,也可以用git commit --no-edit直接提交。

额外注意事项

  • 先备份再操作:执行命令前可以先运行git stash备份当前状态,万一操作失误,用git stash pop就能恢复。
  • 先测试单个文件:可以先挑一个冲突文件,用git checkout --theirs <文件路径>测试,确认恢复的是你想要的master版本后,再批量处理。
  • 区分需要保留和删除的文件:如果有些文件确实是你想删除的,先手动把它们从冲突列表里排除,再执行批量命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:16:49