注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

亨利的3D幻想世界

 
 
 

日志

 
 
关于我

一个在奋斗中的码农

网易考拉推荐

gitlab多人协同工作  

2013-05-11 23:02:40|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

gitlab多人协同工作

本文为亨利向《Git权威指南》的作者蒋鑫老师的答疑邮件写成。
这里特别感谢蒋鑫老师对我询问gitlab的协同工作流程问题的详细解答。
蒋鑫老师的细致专业的解答让我非常感动。

gitlab----新颖的git服务器托管网站,开源免费。你可以在自己的公司或者开发团队搭建好一个。
gitlab的工作流程是
gitlab help中建议的工作流程是这样。如下图。
1

(1).开发成员拷贝管理员建立好的项目到自己本地。

(2).创建自己的分支。

(3).在自己的分支上写代码,并提交。

(4).推送到远程服务器,分支是自己的分支。
(分支的命名规则使用小驼峰式命名法。比如我是员工孙悟空,我就推送到孙悟空分支。分支的命名规则为开发人员姓名+所开发的功能。命名中不要使用特殊字符,不要使用点。
例如孙悟空开发的分支,命名为swkFeature1)

(5).在Commit页面上浏览分支。

(6).创建一个合并请求。

(7).团队的管理员或者领导者审查并且决定是否合并员工提交的分支到主分支上。

管理员在建好的项目中加入开发人员。

开发人员有相应的权限级别,分为Guest,Reporter,Developer,Master,等这几个角色,这几个角色的权限从低到高排列。

Developer能够推送和删除没有保护的分支,Master可以对没有保护和有保护的分支进行操作。如图1所示。

如下图

2

我们使用下面这个图示中的分支模型进行工作。

Git 的开发者都喜欢以这种方式来开展工作,在master 分支中保留完全稳定的代码,即已经发布或即将发布的代码。
与此同时,他们还有一个名为develop 专门用于后续的开发,或仅用于稳定性测试。当然并不是说一定要绝对稳定,不过一旦进入某种稳定状态,
便可以把它合并到master 里。还有在工作中,把开发任务分解为各个功能或者模块,
用topic(topic branch主题分支,有又成为feature branch特性分支),实现之后并测试稳定之后,可以合并到其他分支。
000

Git 的开发者都喜欢以这种方式来开展工作,在master 分支中保留完全稳定的代码,即已经发布或即将发布的代码。
与此同时,他们还有一个名为develop分支 专门用于后续的开发,或仅用于稳定性测试。当然并不是说一定要绝对稳定,
不过一旦进入某种稳定状态,便可以把它合并到master 里。
还有在工作中,把开发任务分解为各个功能或者模块,用topic分支(topic branch主题分支,有又称为feature branch特性分支),
比如实现功能1,在develop分支的基础上产生分支feature1,实现功能2,有分支feature2。
feature1和feature2实现了要求的功能之后,合并到develop分支上去。develop分支测试稳定之后,可以合并到master分支上去。



07-gitlab工作流程4



情景(以下的模拟场景没有把develop分支考虑进去,直接在master分支上分解功能分支。)

1.管理员唐僧建好了一个项目,把孙悟空加入,并授予Developer角色权限,唐僧本身就是比孙悟空高一级的Master角色。唐僧在自己的电脑上设定好了master分支为受保护分支。

3

2.员工孙悟空在自己电脑上工作,并推送已经写好的代码到远程服务器的孙悟空分支上,即swkFeature1上
Snap13

孙悟空做了如下操作

git clone git@mygitlabold.sytes.net:root/testc01.git  //从管理员唐僧那里克隆项目

cd testc01 //进入项目工作

git checkout -b swkFeature1 //创建自己的分支,并切换到此分支上,分支的命名规则为开发人员名字+所开发的功能名字。本例中命名为swkfeature1

vim aa.html //写了一个名为aa的html文件

git add aa.html //加入跟踪

ggit commit -am "swkFeature1 is ready" //提交

git push origin swkFeature1 //推送到远程服务器孙悟空分支上,git提示推送成功

git push origin swkFeature1:master //孙悟空想尝试直接推送到受保护的分支上,孙悟空是没有这个权限的,git会提示为推送失败

图为孙悟空键入的命令

Snap15

孙悟空在Commit页面上浏览分支swkFeature1,然后向项目领导唐僧创建一个合并请求。
image

3.这个合并请求除了唐僧可以登录gitlab上看到之外,还可以通过邮件方式看到。唐僧即使没有登录gitlab,只要他的邮箱支持手机邮箱等方式,
手机邮箱可以通过短信的方式通知唐僧,唐僧可以实时看到合并要求。

image

管理员唐僧对要求合并的分支代码进行审核。
管理员唐僧从服务器上获取孙悟空提交的分支。
git fetch

然后孙悟空推送的远程新分支被管理员唐僧拉拽到本地,但是不是以本地分支存在,
而是保存在 .git/refs/heads 之外(.git/refs/remotes/origin/之中)的远程分支。
管理员唐僧可以如下方法对孙悟空的分支进行审核。
执行
git log master..origin/swkFeature1 //可以看到孙悟空推送了几个提交。

管理员唐僧可以合并孙悟空的分支:
git merge origin/swkFeature1
管理员唐僧可以逐一对孙悟空的提交审核。如果发现有问题,管理员唐僧可以本地回滚。
git reset --hard HEAD^ # 或 master@{1}
几个反复后,当孙悟空的分支审核无误,管理员唐僧将合并后的本地 master 分支推送到远程服务器:
git push # 缺省 remote 为 origin


图 唐僧在自己的电脑上工作,审核孙悟空提交的分支代码,决定是否合并。
Snap20

图 唐僧键入的命令

Snap22

这个时候,唐僧打开gitlab相应的项目,查看master分支的内容。发现服务器上面有了孙悟空提交的源代码了。
Snap23

唐僧可以在那个请求页面下关闭合并请求。gitlab合并请求有自动的功能,但是还是需要管理员唐僧获取下来,合并,测试是否有问题。不建议使用gitlab的自动合并功能。

image

合并请求就被关闭了。

image

4.孙悟空那边。
孙悟空看到请求已经接受。

执行 git fetch 会获取到更新的 master 分支。然后

git checkout master
git merge --ff origin/master
swkFeature1分支完成使命,删掉吧: git branch -d swkFeature1

图孙悟空后来键入的命令,图中因为没有切换到master分支上,所以又重新执行了一遍上述命令。
Snap28


本文档的相关视频演示

1080P高清格式在线视频地址 百度云登录播放

http://pan.baidu.com/share/link?shareid=45279686&uk=1731225724&fid=392711908428280

gitlab多人协同工作 - herry2013git - 亨利的3D幻想世界


1080P高清格式在线视频地址 Youtube

https://www.youtube.com/watch?v=5CVOnTU8nto

gitlab多人协同工作 - herry2013git - 亨利的3D幻想世界

 

720P格式视频 在线地址 直线教程网

http://www.linecg.com/video/play29775.html

gitlab多人协同工作 - herry2013git - 亨利的3D幻想世界

 


低分辨率的视频在线地址 优酷

(国内的99%的视频网站不能让用户直接上传1080P的视频)

http://v.youku.com/v_show/id_XNzA5MTQ2MjYw.html

gitlab多人协同工作 - herry2013git - 亨利的3D幻想世界

 

本集1080P视频文件 可以在网盘下载。

百度网盘

http://pan.baidu.com/s/1gdkRCwr

gitlab多人协同工作 - herry2013git - 亨利的3D幻想世界
 
Mega网盘
https://mega.co.nz/#F!QA9wVZLJ!kktjeJv6-znVd9RHg78YXA

gitlab多人协同工作 - herry2013git - 亨利的3D幻想世界
 
 115网盘 礼品文件接收方式

http://115.com/lb/5lbcjtivkelf

gitlab多人协同工作 - herry2013git - 亨利的3D幻想世界
 


 补充:

1.gitlab的版本更新非常频繁,本文档的某些步骤可能和最新版本有出入。写这个文档和录制视频,是想让大家对gitlab的工作流程有个整体了解。

2.gitlab是用ruby语言,Ruby on Rails框架实现的开源git服务端,码云http://git.oschina.net/的服务端系统就是以gitlab为蓝本二次开发的,如果你不愿意自我搭建gitlab,直接使用码云是一个很好的选择,码云对私有项目和公有项目都是免费的,一个人可以创建999个项目,应该是中国版的github,相比之下github对个人的私有项目是收费的。当然,自我搭建gitlab功能更多一些更自由一些。

3.gogs(https://github.com/gogits/gogs)是用Golang语言实现的开源git服务端,从语言性能上来说,Golang比Ruby要快很多,gitlab项目创建要比gogs要早,功能上更多,gogs目前是gitlab功能的子集,如果gogs将来不断的努力更新,或许将来将成为git开源服务端的首选。
  评论这张
 
阅读(27513)| 评论(6)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018