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

Git合并simple分支到master分支时部分文件丢失如何解决

根因分析

这是Git三向合并的默认规则导致的:从master切出simple分支后,simple分支对部分文件执行了删除操作,如果master分支在切分后的时间里从未修改过这些被删除的文件,执行git merge simple时,Git会默认判定simple分支的删除操作是优先级更高的有效变更,自动将这些文件从合并后的master分支中移除,最终出现你观察到的部分文件丢失的情况。

解决方案

未执行合并时的操作

  • 执行带参数的合并命令,阻止Git自动提交合并结果:
    git merge simple --no-commit --no-ff
  • 批量恢复所有被Git标记为待删除的master原有文件:
    git diff --name-only --diff-filter=D | xargs git restore --source=HEAD --
  • 手动校验文件状态:确认master原有资源文件全部保留,simple分支的新增功能、改动全部正常生效后,提交合并结果即可:
    git commit -m "merge simple: retain master original files"

已完成错误合并后的操作

  • 先将master分支重置到合并前的正常提交,替换以下命令中的<pre-merge-commit-id>为你合并前的master提交哈希:
    git reset --hard <pre-merge-commit-id>
  • 按照上述「未执行合并时的操作」步骤重新执行合并即可。

长期合并优化方案

如果后续需要频繁将simple分支的改动同步到master,可以先在simple分支单独做一次提交:把所有你需要在master保留、但之前被simple删除的文件恢复,后续在simple分支通过.gitignore规则忽略这些文件的改动,既不会影响simple分支的精简性,后续合并也不会再触发文件丢失的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:57:02