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

合并branch A至Master时file1、file2丢失,如何保留分支更改?

问题背景

时间线 t1 < t2 < t3:

  • t1:从master分支创建branch A,在branch A中创建并提交file1和file2;
  • t2:将branch A合并至master,合并后在master分支删除并提交了file1和file2;
  • t3:尝试将branch A合并至master,合并后master中file1和file2丢失,且未触发冲突;

已尝试操作:

  1. 将branch A合并至master,合并后file1和file2丢失;
  2. 将branch A变基至master,变基后file1和file2丢失;

问题:如何通过合并或其他操作让master分支保留file1和file2?

解决方案

方案1:直接从branch A恢复文件

这是最直接的处理方式:

  • 切换到master分支:git checkout master
  • 从branch A拉取需要保留的文件:git checkout branchA -- file1 file2
  • 提交恢复操作:git commit -m "Restore file1 and file2 from branchA"

方案2:合并时强制保留branch A的文件

如果需要通过合并操作实现,可利用Git合并策略选项强制保留branch A的文件版本:

  • 确保当前处于master分支:git checkout master
  • 执行合并并指定保留branch A的文件:git merge -X theirs branchA
  • 若Git未自动提交,手动提交合并结果:git commit -m "Merge branchA and restore file1, file2"
原因说明

直接合并或变基后文件丢失,是因为Git默认以最新变更记录为准:master分支在t2执行的删除操作时间线晚于branch A中创建文件的操作,且branch A后续未对这两个文件做新修改,所以Git会保留删除状态,不会触发冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:15:33