解决Git merge时的冲突

merge代码时遇到的冲突,记录一下解决的方法。

两种情况会导致merge失败

执行git pull 有时会提示自动merge失败,原本显示分支的地方会多出MERGING提示,需要我们手动解决冲突。

  • 没有冲突的部分则会自动合并。
  • 执行git pull 的时候实际上是先执行 git fetch 获取远程仓库的数据,再执行git merge将其与本地的当前分支合并。
  1. 同一个文件中既有2个人独自编辑的部分也有共同编辑的部分,merge时共同编辑的部分git不知道要保留谁的,这就导致了冲突,merge失败。
  2. 还有一种情况是服务器上最新的版本中某个文件被删除了,但是本地版本中还有此文件,这也会导致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就会消失了,此时代码就成功合并了。

-------------本文结束,感谢您的阅读。如有疑问请及时提出-------------