1. 场景
张三提交代码a,李四拉取远端代码merge时不小心将张三代码误删,然后推送merge结果至远端;
李四在后面运行项目中发现代码无法启动,根据查看代码历史发现误删代码。
如图所示,合并产生问题。
2. 问题
如何解决这种merge问题?
3. 方案一:
明确知道误删的代码(一般提交代码较少的情况),修正后提交;
4. 方案二:
通过还原张三的代码和李四自己提交的代码至两个不同的分支;
合并这两个分支,提交推送正确的代码。
4.1. 李四的代码->tmp分支
找到李四最后的提交,checkout,然后在checkout点创建新的本地分支;
4.2. 张三的代码->原分支
找到张三最后的提交,reset代码,原本地分支已经重置为张三最后提交的状态;
4.3. 在原分支(张三的代码基础上)合并李四的代码
这时候我们只需要在原分支上合并刚才checkout出来的李四的代码(刚才新建的tmp分支)过来就好了;
4.4. 提交、推送原分支
这时候张三、李四的代码都已经在原分支上,commit,push,这时候本地和远端会有冲突,解决一下。
结语
至此,问题解决,还是比较曲折的,希望大家合并时多加注意尽量避免这种问题;或者通过建立自己的编辑分支保留自己编辑的代码,这样出现这种问题可以更快地解决。