Mac端SourceTree合并修复分支后开发分支无法运行该如何解决
分支合并故障原因与修复方案
操作问题说明
- 你的
doesNotHaveDeviceTokenBug分支是从远早于当前development分支的历史提交拉取的,两个分支存在大量非bug修复相关的代码、配置差异,本身合并风险极高。 - 冲突解决时直接全部选择
theirs(即修复分支的内容),直接覆盖了development分支后续迭代的所有非bug相关改动,导致development分支丢失大量必要代码与项目配置,最终运行报错。
修复步骤
先恢复development分支到合并前的正常状态
打开SourceTree,找到development分支合并操作之前的最后一个正常提交,右键选择「重置当前分支到此次提交」,重置模式选择硬重置(操作前请先备份好本地未提交的其他改动)。也可以直接在项目终端执行命令:git reset --hard HEAD~1
(如果合并操作是你在development分支的最近一次提交,该命令可直接回退到合并前状态)同步bug修复到development分支(二选一即可)
- 方案A(修复提交较少时优先使用)
切换到doesNotHaveDeviceTokenBug分支,记下所有和DeviceTokens bug修复相关的提交哈希值,再切回development分支,在SourceTree中逐个右键选中要同步的修复提交,选择「拣选提交」,仅同步修复相关的改动,遇到冲突时仅针对bug相关代码部分解决冲突即可,不会影响其他功能代码。 - 方案B(修复提交较多时使用)
先切换到doesNotHaveDeviceTokenBug分支,在终端执行变基命令,将修复分支的基线更新到当前development的最新版本:git rebase development
过程中按需解决冲突,变基完成后验证修复分支可正常运行,再切回development分支执行合并操作,此时合并无冲突,不会影响原有代码。
- 编译前清理缓存
合并完成后关闭Visual Studio Mac,删除项目根目录下的.vs文件夹,以及各项目子目录下的bin、obj缓存文件夹,再重新打开VS编译运行即可。
注意事项
后续合并冲突不要直接全选theirs或ours,需要逐文件确认改动内容,避免覆盖无关的有效代码。
内容的提问来源于stack exchange,提问作者Le Mot Juiced
相关产品推荐
相关产品推荐

