我们公司管理代码用的Git分布式版本控制系统,最近合并分支遇到这个问题,记录下来。
先说下我这个错误产生的步骤。(假设我的分支名是PC,主分支是master)
- 我开分支的原因是需要回滚到master几次提交之前的版本,在此基础上做更改。
- 我在分支PC基础上做了代码修改,版本封版后,需要合并到主版本。
- 切换到主版本:
Git checkout master
- 合并分支PC到master:
git merge PC
- 提示我一大堆冲突,OK,图我也忘了截屏了,大家自行脑补。
- 我找到冲突的文件,挨个修改。突然碰到了一个不能打开编辑的文件,这怎么办。我就找到之前项目的备份拷过来一份替换。我以为万事大吉了。只需要提交就行了。
- 我就
#git -add -A //提交所有变化
#git commit -m '注释'
但是提示错误 ‘fatal: cannot do a partial commit during a merge’,至此解决冲突失败。
解决方案:
我其实在第6步的时候就应该用 git checkout --ours XXX/XXXX.m
来保留主版本的代码,弃用子分支PC的文件代码。或者用下面代码弃用主版本文件代码,保留子分支的文件代码。可惜我没有这么做。。。。。。。。。。。。。我怎么可以这么笨
git checkout --theirs xxx/XXXX.m
开始疯狂找解决方法,😂有点夸张。。。。。。出现这个问题的原因其实就是我替换的时候本地git系统认为我本地有新的提交了。这个时候没有提交是不能merge的。OK,下面👇是解决步骤:
1. #git push //先把本地的更新提交(其实这个更新只是我的错误操作导致的)
2. #git add -A
3. #git commit -m
4. #git push
一切恢复正常。merge结束,希望能帮到和我遇到一样问题的朋友。