两种情况会导致merge失败
执行git pull 有时会提示自动merge失败,原本显示分支的地方会多出MERGING提示,需要我们手动解决冲突。
- 没有冲突的部分则会自动合并。
- 执行
git pull的时候实际上是先执行git fetch获取远程仓库的数据,再执行git merge将其与本地的当前分支合并。
- 同一个文件中既有2个人独自编辑的部分也有共同编辑的部分,merge时共同编辑的部分git不知道要保留谁的,这就导致了冲突,merge失败。

- 还有一种情况是服务器上最新的版本中某个文件被删除了,但是本地版本中还有此文件,这也会导致merge失败。

第一种情况的解决方法
我们可以通过git checkout+ --ours / --theirs来告诉git我们要保留本地版本还是服务器版本的文件
保留本地版本的文件
git checkout --oursours表示dev分支的版本
保留服务器版本的文件
git checkout --theirs theris表示服务器上的版本
批量保留服务器版本的文件
符号.在git中表示所有文件,我们可以用git checkout --theirs . 来批量保留服务器版本的文件。
批量checkout时要确保冲突文件中没有delete by them的文件,否则会报错:
第二种情况的解决方法
删除本地文件
使用git rm来删除本地文件。
使用git status来看一下状态,发现刚刚删除的TX1686.xml已经不见了。
保留本地文件
如果要保留本地文件则可以用git checkout --ours来保留
提交更改
所有冲突都解决完之后就需要git commit -am 'comments'来保存更改。提交后分支名旁边的MERGING就会消失了,此时代码就成功合并了。