上篇文章主要说到Git的图形化管理工具 SourceTree的基本操作, 本篇文章接着上篇内容继续为大家介绍 Git的使用中冲突处理。
前言
一,冲突是如何产生的?
二,如何处理冲突
三,总结
一,冲突是如何产生的?
在项目开发中,往往是多个人一起协作开发一个项目,由于多个人同时修改了一个文件,当一个人修改一个文件后提交Git服务器,如果其他开发人员也修改了该文件, 在拉取项目的时候会提示 本地和Git服务器同时修改了一个文件而冲突。
1,模拟冲突,
用户A修改了文件 README.md 修改内容是 把 “调整信息,”修改成 “冲突第一次提交”,如下图:
(1),修改文件提交服务器
(2),查看github服务器 信息已经修改,如下图:
用户B也修改了改文件 并且信息调整为 “调整信息,验”
当用户B更新Git服务器代码时会提示 有冲突需要解决,如下图:
在这种情况下,我们会发现,同时修改的文件 由 三个点的形状变成 感叹号的形状了,并且点击冲突的文件后,发现里面有冲突的信息,并且有错误提示的关键字
二,如何处理冲突
上面我们说到 产生冲突的时候 冲突文件会在本地的文件中存在 冲突标记 ,我们需要在本地打开冲突的文件,如下图:
那么我们怎么解决这些冲突呢?
首先我们需要了解一下 冲突标记,冲突标志内容分为 本地自己的更改 和 服务器的更改。
<<<<<<< HEAD 到 ======= 里面的 “调整信息,验” 是我们自己本地的commit的内容
=======到 >>>>>>>的是您下拉的内容 “冲突第一次提交”
了解了冲突的标记,我们就知道怎么来做解决冲突了,下面有三种情况我们根据自己需要调整。
1,保留自己代码(删除服务器更新的)
删除:
<<<<<<< HEAD
=======
冲突第一次提交
>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2
保留:
调整信息,验
2,保留服务器代码(删除自己本地调整的)
删除:
<<<<<<< HEAD
调整信息,验
=======
>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2
保留:
冲突第一次提交
3,合并代码(保留自己本地和服务器更新的)
删除:
<<<<<<< HEAD
=======
>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2
保留:
调整信息,验
冲突第一次提交
ok,我们根据自己的需求调整好之后 就要进行下一步了,这里我演示的时候选择保留 自己修改和服务器更新的所有信息(合并代码)
如下图,
一,我删除掉冲突标记,保留所有内容后的效果:
二,在已缓存文件中右击冲突文件,选择 解决冲突---》标记为已解决
三,经过第二步操作后,会提示拉取和提交都有需要提交信息,这时候如果你选择拉取 会提示你 先提交本地修改,按照提示提交你本地的提交文件后,界面变成如下图:
到这里 冲突已经解决了,你直接做 推送 到github服务器操作就行。
到此冲突解决,是不是很简单,主要是要明白怎么出现的 ,才能明确的解决。
三,总结
这节我们主要讲了Git的冲突解决,冲突很常见,也是小伙伴很苦恼的问题,因为处理不好会导致来回回滚和分支恢复,遇到冲突我们首先不要慌,要按照我们自己清晰的理解,一步一步的去处理,要注意看提示,注意留备份。
所以在开发中我强烈建议小伙伴们 通过打分支的方式来开发和提交,合并,可以选择 三种分支方式 master,feature,dev ,我们可以在dev分支开发,最后确认无误后,在合并到master提交到服务器 保证最后合并提交始终是最正确的代码。
OK,本文我们就先说到这里,有问题欢迎留言讨论。下一篇我们说一下:Git分支管理。Git的分支管理非常强大,基本可以解决所有的版本开发情况。
- End -