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

将release分支合并至master分支时如何忽略删除操作

解决release分支合并至master时保留原有文件的方案

刚好碰到过类似的分支合并需求,你需要的是在把release分支合并到master时,只同步新增/修改的内容,完全忽略release里对原有文件的删除操作。这里有几个可行的方案,你可以根据自己的提交历史情况选择:

方案1:合并后手动恢复被删除的文件(通用场景)

这个方案不管你的删除和新增操作是不是在同一个提交里都能用,步骤很清晰:

  • 先切换到master分支:git checkout master
  • 执行合并但不自动提交,也不使用快进模式:git merge --no-commit --no-ff release
  • 这时候你会发现master里的F1、F2被标记为已删除,接下来恢复这两个文件:
    • 恢复F1:git restore --staged F1 && git checkout HEAD -- F1
    • 恢复F2:git restore --staged F2 && git checkout HEAD -- F2
  • 用git status检查一下,确认f3已经被纳入暂存区,F1、F2也恢复成了master原本的状态
  • 最后提交合并结果:git commit -m "Merge release into master, retain original F1 and F2"

方案2:选择性cherry-pick新增提交(适合提交拆分清晰的场景)

如果你的release分支里,添加f3是一个独立的提交,删除F1、F2是另一个单独的提交,那直接挑新增的提交合并会更高效:

  • 切换到master分支:git checkout master
  • 查看release分支的提交历史,找到添加f3的那个提交的哈希值:git log release --oneline
  • 把这个提交单独合并到master:git cherry-pick <你的新增提交哈希>
  • 如果出现冲突,解决冲突后提交即可。这样master只会新增f3,完全保留原来的F1、F2

方案3:临时恢复release分支的文件再合并(适合需要保持release分支后续状态的场景)

如果你不想手动调整合并过程,也可以先在release分支临时恢复F1、F2,合并完成后再撤销这个恢复操作:

  • 切换到release分支:git checkout release
  • 从master分支拉取F1、F2的最新版本:git checkout master -- F1 F2
  • 提交这个临时恢复操作:git commit -m "Temporarily restore F1/F2 for master merge"
  • 切换回master分支合并release:git checkout master && git merge release
  • 合并完成后,如果需要让release分支回到只有f3的状态,切换回release并撤销刚才的恢复提交:git checkout release && git revert HEAD

注意事项

  • 不管用哪个方案,合并前记得先拉取远程的最新分支(git pull origin master和git pull origin release),避免本地和远程版本不一致导致冲突
  • 如果删除操作和新增操作在同一个提交里,方案2就不适用了,优先选方案1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:02:31