认识使用git时的冲突如何产生

将远程的代码cherry-pick(或者是git pull)下来到本地的时候,有时候会出现冲突,产生冲突的原因,主要常见的有以下几种情况:

1,双方修改了同一个代码文件

2,对于我们安卓开发人员来说,不同的的版本,同一个文件也会出现不同(本质上也是代码被另一个人修改了)

总之,在远程代码和我们本地代码版本有双方的修改的时候,就会出现冲突。

既然经常遇见冲突,我们就要了解冲突并且解决,

冲突的代码主要是以下的样子

<<<<<

code1

===========

code2

xxxxxxxxxxxx>>>>>>>>>>>>>>..

这些内容都代表了什么含义,我们通过github实践一下

1:我们使用gitub来试一下,动手实践看结果究竟是怎样的。

首先在本地创建新的文件conflict.txt文件内容

local code1

并将其上传到github。现在本地和远程的代码一致。

2:在github上对该文件内容添加一句后,github上变成

local code1
github code

现在两边代码不一致,但是这时候还不会出现冲突,因为只有一方(github)上修改了代码,需要本地也修改代码后,再git pull下来才会出现冲突,于是

3:现在本地的代码只有一行local code1,那么我们修改一下,加上一行local code2

local code1
local code2

这时候产生冲突的前提条件就产生了(双方对同一个代码进行了修改)。现在git pull代码带本地(本地修改代码后,要git commit一下,不然不能git pull),发生冲突。

4:查看冲突

local code1
<<<<<<< HEAD
local code2
=======
github code
>>>>>>> 13153847ab6c43913b04c233bc5c44081bb844d6

产生冲突的原因很简单,本地的代码认为第二行代码是local code2,远端认为第二行代码是github code。这样就发生了冲突。

我们可以看到<<<<<<< HEAD与=====中间的代码是本地的======与>>>>>>> 13153847ab6c43913b04c233bc5c44081bb844d6中间的代码是github上的.

然后这一串数字明显是一个commit id ,我们看一下是哪一个。

使用git log 查看本地提交,发现没有。查看github上,可以发现这个是github上的那次修改的commit id。

5:到此我们已经弄清楚了一次冲突中的代码都代表什么意思了。

<<<<<

code1

===========

code2

xxxxxxxxxxxxxxx>>>>>>>>>>>>>>..

其中HEAD是冲突的开始,code1是本地的代码,code2是与code1产生冲突的,远程的代码,最后的一段数字是远端code2的提交commit id。

知道了这些以后,有助于我们遇到冲突的时候,怎么解决code1与code2的冲突

你可能感兴趣的:(安卓基础,git基础)