上篇文章主要说到Git的图形化管理工具 SourceTree的基本操作, 本篇文章接着上篇内容继续为大家介绍 Git的使用中冲突处理。

 

前言

一,冲突是如何产生的?

二,如何处理冲突

三,总结

 

一,冲突是如何产生的?

 

在项目开发中,往往是多个人一起协作开发一个项目,由于多个人同时修改了一个文件,当一个人修改一个文件后提交Git服务器,如果其他开发人员也修改了该文件, 在拉取项目的时候会提示 本地和Git服务器同时修改了一个文件而冲突。

 

1,模拟冲突,

 

用户A修改了文件 README.md 修改内容是 把 “调整信息,”修改成 “冲突第一次提交”,如下图:

 

(1),修改文件提交服务器

 Git(四) Git冲突处理_f5

 

(2),查看github服务器 信息已经修改,如下图:

 

Git(四) Git冲突处理_服务器_02

 

 

用户B也修改了改文件 并且信息调整为  “调整信息,验”

 

当用户B更新Git服务器代码时会提示 有冲突需要解决,如下图:

 

Git(四) Git冲突处理_服务器_03

 

在这种情况下,我们会发现,同时修改的文件 由 三个点的形状变成 感叹号的形状了,并且点击冲突的文件后,发现里面有冲突的信息,并且有错误提示的关键字

 

Git(四) Git冲突处理_f5_04

 

二,如何处理冲突

 

上面我们说到 产生冲突的时候 冲突文件会在本地的文件中存在 冲突标记 ,我们需要在本地打开冲突的文件,如下图:

 

Git(四) Git冲突处理_git服务器_05

 

那么我们怎么解决这些冲突呢?

 

首先我们需要了解一下 冲突标记,冲突标志内容分为 本地自己的更改 和 服务器的更改。

 

<<<<<<< HEAD  到 ======= 里面的  “调整信息,验” 是我们自己本地的commit的内容

 

=======到 >>>>>>>的是您下拉的内容  “冲突第一次提交”

 

了解了冲突的标记,我们就知道怎么来做解决冲突了,下面有三种情况我们根据自己需要调整。

1,保留自己代码(删除服务器更新的)

删除:

<<<<<<< HEAD

 

=======

冲突第一次提交

>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2

 

保留:

调整信息,验

 

2,保留服务器代码(删除自己本地调整的)

 

删除:

 

<<<<<<< HEAD

调整信息,验

=======

 

>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2

 

 

 

保留:

 

冲突第一次提交

 

3,合并代码(保留自己本地和服务器更新的)

 

删除:

 

<<<<<<< HEAD

 

=======

 

>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2

 

保留:

 

调整信息,验

 

冲突第一次提交

 

 

ok,我们根据自己的需求调整好之后 就要进行下一步了,这里我演示的时候选择保留 自己修改和服务器更新的所有信息(合并代码)

 

如下图,

一,我删除掉冲突标记,保留所有内容后的效果:

 

Git(四) Git冲突处理_git_06

 

二,在已缓存文件中右击冲突文件,选择  解决冲突---》标记为已解决

 

Git(四) Git冲突处理_服务器_07

 

三,经过第二步操作后,会提示拉取和提交都有需要提交信息,这时候如果你选择拉取 会提示你  先提交本地修改,按照提示提交你本地的提交文件后,界面变成如下图:

 

Git(四) Git冲突处理_git服务器_08

 

到这里 冲突已经解决了,你直接做  推送  到github服务器操作就行。

 

到此冲突解决,是不是很简单,主要是要明白怎么出现的 ,才能明确的解决。

 

 

三,总结

这节我们主要讲了Git的冲突解决,冲突很常见,也是小伙伴很苦恼的问题,因为处理不好会导致来回回滚和分支恢复,遇到冲突我们首先不要慌,要按照我们自己清晰的理解,一步一步的去处理,要注意看提示,注意留备份。

 

所以在开发中我强烈建议小伙伴们 通过打分支的方式来开发和提交,合并,可以选择 三种分支方式  master,feature,dev ,我们可以在dev分支开发,最后确认无误后,在合并到master提交到服务器  保证最后合并提交始终是最正确的代码。

 

OK,本文我们就先说到这里,有问题欢迎留言讨论。下一篇我们说一下:Git分支管理。Git的分支管理非常强大,基本可以解决所有的版本开发情况。

 

- End -

 

 

 

Git(四) Git冲突处理_3d_09