您的位置:首页 > 其它

使用git和gitlab进行协同开发流程

2016-03-21 09:27 337 查看

一、基本概念

1.仓库(Repository)

①源仓库(线上版本库)

在项目的开始,项目的发起者构建起一个项目的最原始的仓库,称为
origin。


源仓库的有两个作用:

1.汇总参与该项目的各个开发者的代码

2.存放趋于稳定和可发布的代码

源仓库应该是受保护的,开发者不应该直接对其进行开发工作。只有项目管理者能对其进行较高权限的操作。

②开发者仓库(本地仓库)

任何开发者都不会对源仓库进行直接的操作,源仓库建立以后,每个开发者需要做的事情就是把源仓库的“复制”一份,作为自己日常开发的仓库。这个复制是gitlab上面的
fork


每个开发者所fork的仓库是完全独立的,互不干扰,甚至与源仓库都无关。每个开发者仓库相当于一个源仓库实体的影像,开发者在这个影像中进行编码,提交到自己的仓库中,这样就可以轻易地实现团队成员之间的并行开发工作。而开发工作完成以后,开发者可以向源仓库

送pullrequest,
请求管理员把自己的代码合并到源仓库中,这样就实现了分布式开发工作和集中式的管理

2.分支(Branch)

①masterbranch:主分支

master主分支从项目一开始便存在,它用于存放经过测试,已经完全稳定代码;在项目开发以后的任何时刻当中,
master
存放的代码应该是可作为产品供用户使用的代码。所以,应该随时保持
master
仓库代码的清洁和稳定,确保入库之前是通过完全测试和代
码reivew


master
分支是所有分支中最不活跃的,大概每个月或每两个月更新一次,每一次
master
新的时候都应该用
git
打上
tag
,来说明产品有新版本发布。

②developbranch:开发分支

develop开发分支,一开始从
master
分支中分离出来,用于开发者存放基本稳定代码。每个开发者的仓库相当于源仓库的一个镜像,每个开发者自己的仓库上也有
master
develop
。开发者把功能做好以后,是存放到自己的
develop
中,当测试完以后,可以向管理者

发起一个
pullrequest
,请求把自己仓库的
develop
分支合并到源仓库的
develop
中。所有开发者开发好的功能会在源仓库的
develop
分支中进行汇总,当
develop
中的代码经过不断的测试,已经逐渐趋于稳定了,接近产品目标了。这时候,就可以把
develop
分支合并

master
分支中,发布一个新版本。

注:任何人不应该向
master
直接进行无意义的合并、提交操作。正常情况下,
master
只应该接受
develop
的合并,也就是说,
master
所有代码更新应该源于合并
develop
的代码。

③featurebranch:功能分支

feature功能性分支,是用于开发项目的功能的分支,是开发者主要战斗阵地。开发者在本地仓库从
develop
分支分出功能分支,在该分支上进行功能的开发,开发完成以后再合并到
develop
分支上,这时候功能性分支已经完成任务,可以删除。功能性分支的命名一般

feature-*
,*
为需要开发的功能的名称。

二、如何操作(仅做举例说明用)

Step1:源仓库的构建

这一步通常由项目发起人(项目管理员)来操作,源仓库为op/Chanjet_Asset_Management,并初始化两个分支master和develop.

Step2:开发者fork源仓库

源仓库建立以后,每个开发就可以去复制一份源仓库到自己的gitlab账号中,然后作为自己开发所用的仓库。假设我是一个项目中的开发者,我就到op/Chanjet_Asset_Managemen项目主页上去fork.

Step3:把自己开发者仓库clone到本地

>>>gitclone'target='_blank'>http://gitlab.rd.chanjet.com/op/Chanjet_Asset_Management.git[/code]

Step4:构建功能分支进行开发

假设现在要开发一个“讨论”功能:

>>>gitcheckoutdevelop

#切换到`develop`分支

>>>gitcheckout-bfeature-discuss

#分出一个功能性分支[/code]
>>>touchdiscuss.py

#假装discuss.py就是我们要开发的功能

>>>git
add
.

>>>gitcommit-m
'finishdiscussfeature'

#提交更改,多次测试以后

>>>gitcheckoutdevelop

#回到develop分支

>>>git
merge
--no-fffeature-discuss

#把做好的功能合并到develop中

>>>gitbranch-dfeature-discuss

#删除功能性分支

>>>gitpushorigindevelop

#把develop提交到自己的远程仓库中[/code]
此时,上自己gitlab的项目主页中
develop
分支中查看,已经有
discuss.py
这个文件了:

Step5:向管理员提交pullrequest

在完成了“讨论”功能(当然,也可能对自己的
develop
进行了多次合并,完成了多个功能),经过测试以后,觉得没问题,就可以请求管理员把自己仓库的
develop
分支合并到源仓库的
develop
分支中。

Step6管理员测试、合并

管理员登陆
gitlab
,看到了开发者对源仓库发起的
pullrequest


管理员需要做的事情就是:

1.
开发者的代码进行
review


2.在他的本地测试新建一个测试分支,测试开发者的代码:

>>>gitcheckoutdevelop

#进入管理员本地的develop分支[code]

>>>gitcheckout-bmanager-develop

#从develop分支中分出一个叫manager-develop的测试分支测试开发者的代码[code]

>>>gitpull

http://gitlab.rd.chanjet.com/op/Chanjet_Asset_Management.gitdevelop

#把开发者的代码pull到测试分支中,进行测试

判断是否同意合并到源仓库的
develop
,如果经过测试没问题,可以把开发者的代码合并到源仓库的
develop
中:

>>>gitcheckoutdevelop

>>>git
merge
--no-ffmanager-develop

>>>gitpushorigindevelop

注:管理员一直在操作的仓库是源仓库。

以上,就是一个
git
gitlab
协同工作流的基本步骤。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: