You need to enable JavaScript to run this app. Git合并development分支到main分支后文件丢失无冲突该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Git合并development分支到main分支后文件丢失无冲突该如何解决

Git无冲突合并后文件丢失的解决办法

合并过程无冲突但文件被删除,核心原因是Git判定待合并的development分支中存在对应文件的删除提交,且两个分支对该文件没有产生修改冲突,因此合并时自动执行了删除操作。可按照以下步骤处理:


第一步:先确认变更信息

  1. 执行git log --oneline找到本次合并提交的哈希值,记为<合并提交哈希>
  2. 执行git diff --name-only <合并提交哈希>^ <合并提交哈希>,列出合并过程中所有变更的文件,确认被删除的文件路径

第二步:根据合并提交是否推送至远程,选择对应处理方案

场景1:合并提交未推送至远程

可选择两种处理方式:

  • 撤销合并后重新操作
    执行git reset --merge HEAD~1,回退到合并前的状态,不会丢失本地未提交的修改。回退后先执行git diff main development -- <被删除文件路径>,确认文件删除的原因。如果确认development分支的文件是正确的,可先执行git checkout development -- <被删除文件路径>同步文件,再重新执行合并操作即可。
  • 不撤销合并,直接恢复被删除文件
    执行git checkout <合并提交哈希>^2 -- <被删除文件路径>,其中^2指代合并提交的第二个父节点(即development分支的提交记录),拉取文件后正常执行git add、git commit提交修改即可。
场景2:合并提交已推送至远程

注意不要使用git reset --hard后强推远程,会覆盖其他协作者的提交记录
执行git revert -m 1 <合并提交哈希>,该命令会生成一个新的提交,撤销本次合并的所有变更,回到合并前的main分支状态。确认无误后将新提交推送到远程,再排查清楚文件删除的原因后重新执行合并即可。


预防方案

后续合并分支前,可先执行git diff --name-status main development预览所有变更,D开头的条目即为合并后会被删除的文件,提前排查避免问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:06:00