写在前面的话
万事开头难,在写博客的过程中会重新发现问题,重新思考问题,这样会加深自己对东西的理解。
项目合并
上一篇讲到了,项目开发者yangjingya自己fork了qulewei的项目,并进行了提交。这时候作为项目主管的qulewei是看不到yangjingya的代码的,除非去cloneyangjingya的本地仓库。这时候,项目到了验收的时候,需要将两人的项目进行合并。先分别看一下两人的远程仓库
这是yangjingya的远程仓库
这是qulewei的远程仓库
现在由yangjingya发出merge请求,这部分操作在Gitlab上进行。
这里可以看出yangjingya想将自己的项目merge到qulewei的项目中去。
可以看到这个merge请求是将yangjingya的master分支合并到master中,这时我们切换到qulewei的账号中去接受这个merge请求。
只需要接受这个merge就好了。
这时候我们的文件就如下图所示了
可以看出README.md是由qulewei提交的,test.c是由yangjingya提交的,两个工程合并在一起了。
合并冲突
合并冲突就是两个人同时修改同一个文件的同一个地方,这样在合并时就会出现合并冲突,因为Git分辨不出来谁的是正确的,谁的是错误的,这就需要人工手动去修改。
这里描述一个场景,当我们完成了一次merge之后,qulewei本地仓库中仍然没有更新,需要我们手动去更新一下,拿到最新的代码,然后再进行开发。
这时候我们会执行
git pull origin master
这句话的意思是我们从远程代码仓库中拿到最新的代码,并跟本地的代码仓库进行merge
执行之后,如下图所示:
出现了所谓的merge冲突,提示我们冲突是出现在README.md中出现的,现在我们就要去看看README.md中的问题。
=======分割的是冲突的两部分,上面是本地的部分,下面是远程冲突的部分。我们按照我们的想法进行修改。
然后做如下操作冲突便解决了
结束语
篇文章主要是讲解了,如何通过Gitlab去merge两个人的项目,以及如何去处理merge冲突,处理merge冲突其实还是需要人们手工去处理,Git能做的只能是将冲突部分标出,具体判断哪些是必要的,哪些是不必要的还需要教给程序员处理。