目录
前言:
git从发布以来,强大的功能有版本回退以及分支管理,那么分支管理用来不仅是为了维护master的,更多的是多人协作的一种代表,所以多人协作这一章节,基本上说的就是我们如何使用多分支来实现一个团队开发功能。
本文的目标有两个:
一个是两个分支的情况下,master分支和dev分支,两个开发者共同在dev分支下开发两段代码,为了方便阐述,这里让a开发者添加Hello world,b开发者添加Hello git即可。
另一个是三个分支的情况下,a b拥有自己的独立分支,开发完自己的工作之后,共同合并到master分支上即可。
那么话不多说,直接进入到正题部分。
多人协作一
首先,我们创建仓库的界面自然是可以跳过的,所以我们使用上篇文章创建的仓库->linux,
该仓库除了一个code目录,什么也没有,我们将file.txt作为开发的文件:
那么第一个问题,我们自己演示这个过程的时候,如果创建两个开发者呢?
所以我们需要在linux环境下创建一个,在windows环境下再克隆仓库:
我们使用https协议创建,使用.ssh还需要配置一下下,有点点麻烦。
此时仓库的内容就出来了,那么我们还需要创建分支,这里可以直接在远端创建一个分支,然后在本地仓库进行连接即可:
在gitee的分支界面就可以创建分支,名称不妨取为dev。
那么现在的第一个问题,本地的仓库没有远程的分支怎么办?所以我们需要pull一个分支下来:
pull之后,使用-a选项,可以看到除了本地分支之外的远程分支,-r是直接看到远程的分支,-r remote的意思。现在分支有了,但是本地的分支还没有,所以我们应该创建本地的dev分支:
那么光创建是不可以的,因为本地分支和远程分支dev是没有连接上的,所以使用命令checkout后面加上一个origin/dev即可。此时两个分支就连接上了。另外的一个开发者同理:
好了,两个开发者的分支工作已经做好了,还差一点,我们将file.txt文件传过去,然后在开发者2上pull一下:
这里肯定是有同学有问题的,因为git push 后面的分支名称呢?这是因为dev分支本地和远程的是连接在一起的,所以我们可以省略后面的git push origin master:master的origin后面的部分了。
那么开发者1push了,开发者2pull一下就就可以了:
那么现在看看Gitee里面的情况如何:
需要注意的是,我们要切换分支才能查看到新传的file.txt,因为master分支是没有merge的。
现在多分支的情况已经准备好了,就准备开发了。
首先,我们切换到开发者1并且新增加内容:
常规的三部曲就完成了,此时切换到gitee部分查看:
dev分支下的开发者1已经完成了对应的工作,那么切换到开发者2并完成对应的工作:
需要注意的是,windows下可没有vim哦,所以我们直接用记事本打开就可以了:
此时修改完成,那么进入到三部曲环节:
并且也是不出意外的报错了,此时发生的并不是合并冲突,而是因为开发者1push之后导致开发者2的本地和远程并不同步,所以先pull一下,此时就会出现合并冲突了:
我们希望的出现了,那么我们解决冲突即可:
冲突解决完毕。
重新进行三部曲,这里不要忘记,merge冲突之后需要重新add commit等:
那么此时查看Gitee情况:
符合条件。
那么最后的情况是我们需要和master合并:
此时有一个好习惯是将切换到master分支的时候,再pull一下,保证master的代码情况是最新的,此时到dev分支先和master分支进行合并,这也是一个好习惯:
但是现在远端的可是没有push哦,所以还需要推送到远端:
那么dev分支就没用了,删除即可。
可是删除了远程分支依旧存在,所以,我们可以使用指令git remote show origin是可以看到远端和本地分支的关系的,那么使用命令git remote prune origin就可以删除了,因为Prune是剪的意思:
多人协作二
对于多人协作一我们已经清楚了,简单总结为什么会出现合并冲突,因为两个开发者在同一条分支上,所以就会导致合并冲突,那么多人协作二是创建两条分支,也就是开发者1拥有自己的分支,开发者2也拥有自己的分支:
所以我们自然是需要在远端先创建两条分支的:
此时创建好了,那么老操作,在Linux环境下使用分支dev1,并且进行连接:
Windows环境同理:
此时,环境就配置好了,那么首先是开发者1,创建一个文档file1.txt并写入:
开发者1的工作完成,然后是开发者2:
两边的工作都完成了。此时就要对远端进行操作了。
可是此时,开发者2的代码好像差点意思,刚好又回家了,所以还在办公室苦苦加班的你,要负责剩余部分的开发工作了,那么如何切换到另一个分支呢?
需要pull即可:
那么修改对应的文件:
好了,重新三部曲就可以了:
此时查看远端情况:
工作都是完成了的,那么就要和master进行merge操作了,同样,先切换到master分支,pull一下,然后切换回去,dev合并master,master再合并dev即可:
此时,dev1的情况就完成了,dev2同理:
这个界面代表车成功。
感谢阅读!