Git合并错误恢复咨询:误合分支后合规修正方案及问题解析
解决方案与问题解析
符合仓库策略的修复方案
1. 修复design-main分支(移除禁止的测试文件)
- 拉取并切换到
design-dev分支:git checkout design-dev git pull origin design-dev - 合并当前
design-main的错误状态到design-dev,触发测试文件的引入:git merge origin/design-main - 删除所有测试文件并提交更改:
git rm -r T-files-v2 git commit -m "Remove forbidden test files from design branch" - 推送修改到远程
design-dev:git push origin design-dev - 向管理员发起PR,将
design-dev合并到design-main。合并完成后,design-main将恢复为仅包含D-files-v2的合规状态,且未改写历史。
2. 更新test-main到预期状态
- 拉取并切换到
test-dev分支:git checkout test-dev git pull origin test-dev - 合并最新的
design-main到test-dev,同步设计文件更新:git merge origin/design-main - 推送修改到远程
test-dev:git push origin test-dev - 向管理员发起PR,将
test-dev合并到test-main。合并完成后,test-main将达到D-files-v2 + T-files-v2的预期状态。
git revert导致后续合并异常的原因
使用git revert -m 1 <错误合并提交ID>时,Git会创建一个反向提交,这个提交的作用是撤销合并提交带来的所有变更——具体到这个场景,就是删除了从test-dev合并进来的T-files-v2。
但Git的合并逻辑依赖于提交的历史关系:当后续将design-main合并到test-main时,Git会识别到design-main存在一个“拒绝T-files-v2”的提交记录,因此会将这个反向提交的变更应用到test-main上,最终导致test-main中原本合法的T-files-v2被删除,无法达到预期状态。
内容的提问来源于stack exchange,提问作者urbite
相关产品推荐
相关产品推荐

