Gitlab 是 Git 服务端的集成管理平台,提供了:
1、代码托管服务
2、访问权限控制
3、问题跟踪,bug的记录、跟踪和讨论
4、Wiki,项目中一些相关的说明和文档
5、代码审查,可以查看、评论代码
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。如果通过网页注册gitlab,允许免费将project设置为私有,不对外开放。而github设置为私有需要付费。可以在自己的远程服务器上搭建gitlab,提交的code保存在自己的远程服务器。搭建好的gitlab对局域网外的人是不可见的。而push到github的code是只能托管在别人服务器上的。作为项目管理者可以邀请开发成员,各开发成员只能将code push到远程服务器的分支,不能push到远程服务器的master分支(master分支是受保护分支),只有项目管理者才可以push到远程服务器的master分支。被邀请的开发成员只能看到被邀请开发的项目code,看不到其他项目的code。
访问权限:
这个是在建立项目时就需要选定的,主要用于决定哪些人可以访问此项目,包含3种:
Private - 私有,只有属于该项目成员才有原先查看
Internal - 内部,用个Gitlab账号的人都可以clone
Public - 公开,任何人可以clone
角色:
Gitlab定义了以下几个角色:
Guest - 访客
Reporter - 报告者; 可以理解为测试员、产品经理等,一般负责提交issue等
Developer - 开发者; 负责开发
Master - 主人; 一般是组长,负责对Master分支进行维护
Owner - 拥有者; 一般是项目经理
一、建立group和project
在gitlab上创建group和project都很容易,只需要登入自己搭建的gitlab,然后点击下图中所示的create a group
进入创建页面后,在图中标记1的地方给group取一个名字,在标记2的地方为group上传(也可不上传)一张配图,在标记3的地方设置权限,我这里设置的是private,也就是对非group成员是不可见的,最后点击create group就创建成功了。
group创建完后,就会自动跳转到创建project的页面,点击create project。
project创建好后,网页会自动跳转到设置页面,如下图所示,首先写上project的名字,然后设置权限,团队项目一般设置为private,还有一点要注意的是,是否将这个project初始化为一个repository,如果是想将他建一个新仓库,就给它勾上,最后点击create project,project就创建成功了。
二、为project添加members
project创建好后,进入project页面,在左下角有一个settings,如下图示
然后点击members,就会进入到下面的页面,在标记1的地方填上members的邮箱,在标记2的地方设置members的权限,如果是一起开发项目,一般就设置为developer。
如果你的group下面有多个project,比如有project1,project2,project3,而你的project1邀请了A和B,project2邀请了B和C,那么members A在自己的gitlab主页就可以看到project1,B可以看到project1和project2,C只能看到project2。如下图所示
三、各members如何提交code
1、首先给project添加一个分支,因为master分支是受保护的,各个members是不能push到master的,只能push到branch。如下图所示,Branch(1)表示目前只有master分支,点击它创建一条新分支
新分支的名字自己随意取,记住下面还有一条create from,表示当前这条分支来自于那条分支。
2、各members通过git clone “path”从服务器上拉取project,path的真实值可以在project页面中看到。
3、输入git branch这时可以看到有一个master分支,在输入git checkout branch-0.1,然后在输入git branch,就可以看到有两条分支了,如下图示。
4、各members在branch-0.1上开发完后,就可以push了,记住作为members只能将本地code push到远程branch,不能push到远程master。
git pull的一般形式为 git pull <远程主机名> <远程分支名>:<本地分支名>
git push的一般形式为 git push <远程主机名> <本地分支名>:<远程分支名>
本地master push到远程branch-0.1:
git checkout master //切换到master分支
git pull origin branch-0.1 //将远程branch-0.1分支fetch+merge到当前所在分支
git push -u origin master:branch-0.1 //将本地master分支push到远程branch-0.1分支
本地branch-0.1 push到远程branch-0.1:
git checkout branch-0.1
git pull origin branch-0.1
git push -u origin branch-0.1:branch-0.1
这里的origin表示本地,branch-0.1表示远程分支名字
5、作为这个project的maintainer最后将branch合并到master。
很简单,只需要在每次push前先将远程服务器上的project pull一下,然后再push到master。
git checkout master
git pull
git merge --no-ff branch-0.1 -m "写上你的备注"
git push -u origin master