阶段1-构建账户信息
1.1 管理员分配账户
方式1-推荐
企业正常使用gitlab时,一般由项目经理(超级管理员)手动创建开发者账户信息,然后将账户发送给开发者,以便登录使用;
流程如下:
![](https://file.jishuzhan.net/article/1761060859401998337/6db9410c09fbbe0dd73e34f3050d5506.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/d6daab7aa474be0bf4025e488a49b852.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/e44965842a87821db13b7943ee237e93.webp)
点击创建用户按钮;
创建完用户后,可能指定的邮件地址接收不到账户激活信息,我们只直接添加密码信息:
![](https://file.jishuzhan.net/article/1761060859401998337/12290781ea2a0607f4e6cdbda74a9e98.webp)
方式2-临时开启注册功能自行注册
处于工作量的考虑,对于我们来说,超级管理员也可临时开启登录功能(只有超级管理员才拥有该权限):
操作流程如下:
![](https://file.jishuzhan.net/article/1761060859401998337/6db9410c09fbbe0dd73e34f3050d5506.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/546166fde09693f874fa5847cc7825e5.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/d0ca3d68b5afed97df19157e57874518.webp)
点击保存更改,普通用户就可以正常注册了;
这样访问http://47.96.143.141:9999/users/sign_in也可注册;
点击注册:
![](https://file.jishuzhan.net/article/1761060859401998337/3a75a4f9038009a89d0e9446a45832ec.webp)
填写账户信息:
![](https://file.jishuzhan.net/article/1761060859401998337/742edc9d8133aaee6f54ca06fa07046b.webp)
选择账户的角色:
![](https://file.jishuzhan.net/article/1761060859401998337/47d9dd7d3734011a6395c2cfda2abd6b.webp)
点击get started 自动登录进入操作界面:
![](https://file.jishuzhan.net/article/1761060859401998337/af15c77e388cf8b731ba9b6829149440.webp)
选择界面汉化:
![](https://file.jishuzhan.net/article/1761060859401998337/6c93c59a6d77c70c18bfa2afd84149cb.webp)
说明:
tex
【1】Gitlab用户在组中有角色权限:Guest、Reporter、Developer、Master、Owner
【2】Gitlab权限管理
Guest:可以创建issue、发表评论,不能读写版本库,访客;
Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限,报告者; 可以理解为测试员、产品经理等,一般负责提交issue等;
Developer:可以克隆代码、开发、提交、push,RD可以赋予这个权限,开发者;
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限,主要负责对master分支进行维护;
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予 这个权限,一般是项目经理;
【3】Gitlab中的组和项目有三种访问权限:Private、Internal、Public
Private:只有组成员才能看到★★★
Internal:只要登录的用户就能看到
Public:所有人都能看到
开源项目和组一般设置为public
阶段2-添加用户开发组
2.1.构建用户组
构建项目组一般是由项目经理来构建:
tex
注意事项:我们的组名:jrzs_147_g1,格式:项目名称_期_gN
![](https://file.jishuzhan.net/article/1761060859401998337/5d024557cf78427d06b1a88768b910b4.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/5faf503d8bb093983d9fc97f048ad0ae.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/736a4020e7b95b19f6d2068a56928d0a.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/21a9505aa733586b22747b764c7d8024.webp)
2.2. 用户组添加用户
![](https://file.jishuzhan.net/article/1761060859401998337/e667dfa77e6756a4df70ad92c66de3fc.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/aa45a30bf2b3465a3cf6c15139db9d41.webp)
阶段3-构建项目
3.1.用户组构建新项目
![](https://file.jishuzhan.net/article/1761060859401998337/6ac23004dd1914d238be9e71e51e7c8a.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/da90a8c3ff37d709dd1d4df20901b07b.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/4cd794420fae3564b170e1cb99ed56ef.webp)
3.2 配置ssh免密登录
配置ssh免密登录(可选项):
- 生成秘钥指令:
shell
ssh-keygen -t rsa (3个回车)
- 赋值pub公钥,并在gitlab中配置,过程与配置gitee一致:
![](https://file.jishuzhan.net/article/1761060859401998337/4aab88e73a336cf75e42483db2e600bd.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/75104628eceb7388438db50f67df5a16.webp)
3.3 配置本地仓库开发人员信息
接下来,git init初始化本地git仓库,并设置用户相关信息,这样提交时就会显示对应配置的用户名信息了:
shell
git config user.name 'lisi1'
git config user.email '666@163.com'
开发组长将初始化代码提交到远程仓库,然后构建dev分支:
![](https://file.jishuzhan.net/article/1761060859401998337/d1b219e7166b0bc81a718aeaf1928ee0.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/d16b14b36b7d87c3fed6a1bf4846d6f5.webp)
平台构建好dev分支后(也可本地构建dev分支,然后推送到远程),本地需要git fetch刷新分支最新配置;
3.4.设置分支保护
团队开发时为了避免一些重要的开发分支(master)被意外篡改,管理人员需要将这些重要的分支设置分支保护,这样普通开发人员就不能直接将代码进行推送和合并了,需要专门的分支管理人员(开发组长)维护重要分支的提交、合并操作;
设置分支保护流程如下:
![](https://file.jishuzhan.net/article/1761060859401998337/2086af95bbd0da71f93fde2493bfa1cc.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/7f7674dd9e840bebaeb441eee2f5bec8.webp)
临时禁用自动持续集成:
![](https://file.jishuzhan.net/article/1761060859401998337/de7b0111c05068623ffd4fa522406037.webp)
3.5.开发人员开发流程
1)普通开发者代码拉取
构建一个文件夹,然后在文件夹中克隆工程基础代码:
shell
#因为项目的私有的,所以克隆代码时,要制定对应的账户和密码,否则无权限下载;
#格式:git clone http://账号:密码@47.96.143.141:9999/jrzs_142_tmp_g2/jrzs_stock_tmp.git
$ git clone http://lisi2:12345678@47.96.143.141:9999/jrzs_142_tmp_g2/jrzs_stock_tmp.git
然后使用idea打开代码,并设置当前用户信息:
shell
C:\Users\46035\Desktop\lisi2\jrzs_stock_tmp>git config user.name
陆庆辉
C:\Users\46035\Desktop\lisi2\jrzs_stock_tmp>git config user.email
777@163.com
2)检出dev分支
接下来开发人员手动检出远程dev分支:
![](https://file.jishuzhan.net/article/1761060859401998337/e8ca387830734fc29538c39de1ae5c19.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/d89a79f1856c41f727eb752354f32428.webp)
这样本地就会构建一个dev分支!
3)基于dev分支检出功能分支
对于普通开发人员来说,工作都围绕dev分支展开,而实际开发中,为了避免直接污染dev分支,一般开发人员会在dev的基础上checkout出一个功能分支:比如feature_login
![](https://file.jishuzhan.net/article/1761060859401998337/ccb327ac6c8c24559670c748dccd7998.webp)
4)合并功能分支到dev分支
在功能分支下开发完毕后,将代码合并到dev分支下:
![](https://file.jishuzhan.net/article/1761060859401998337/56b198b0693b964988c01d56d96bb9e6.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/27ca8228569858adb4d9545069c8f612.webp)
到此,feature_login代码就合并到dev分支下了!
5)推送远程dev
开发人员自测代码无问题后,就可以将代码提交到远程dev分支了:
![](https://file.jishuzhan.net/article/1761060859401998337/2cdc12d73df032a8fe08ddeb4b0f69b1.webp)
说明:开发者推送代码到dev后,一般测试人员会介入,测试ok后,分支管理人员会进行受保护分支的合并工作(在自动化工作流汇中,测试通过后,会自动合并);
3.6.管理员合并代码到master
1) 流程
管理员在合并代码之前,先把最新的dev代码拉去到本地,然后做基本的审查工作:
![](https://file.jishuzhan.net/article/1761060859401998337/d468a07394c6517ca4a4ef43f51d9360.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/a34c6f3864852e811b8ac9acbe3e3495.webp)
此时本地仓库拉取到了最新的dev代码,代码检查无误后合并到master分支:
![](https://file.jishuzhan.net/article/1761060859401998337/5331ba7ce4a41597b9cb281e2b963b7e.webp)
代码合并到master分支后,提交到远程的master分支即可;
2)最终效果
不同的开发人员共同维护master和dev分支,最终提交记录线:
![](https://file.jishuzhan.net/article/1761060859401998337/ecd9707acf636d097b7502c6c2454f71.webp)
反例:
![](https://file.jishuzhan.net/article/1761060859401998337/8484aea86f550389c48196915a0407ad.webp)
跨域不同的分支 合并代码,容易丢失代码;
3.7.回滚操作
通过revert提交则会产生新的提交记录;
本质上就是在新的提交记录下做了逆向操作,实现回滚;
![](https://file.jishuzhan.net/article/1761060859401998337/56d19ef13712c1c268ab35d1916b4203.webp)
获取通过reset回滚时,最新的提交记录不会消失;
![](https://file.jishuzhan.net/article/1761060859401998337/ed18bbb8a1664674723c1717f8c311f7.webp)
3.8.GIT打TAG
1)打标签概述
当项目开发到一些重要阶段后,会进行软件不同版本的发布部署工作,显然如果不记录下这些重要的历史节点,后期从繁杂的提交流水看中查找会变得非常艰难,所以git提供了为开发节点打标签的功能:
![](https://file.jishuzhan.net/article/1761060859401998337/00a99511bc7a6f373cd855c173c13180.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/f571413157dc1dede0ea7efeab4c7054.webp)
2)tag其它
详见:day07-实战\资料\3.项目使用GitLab流程\git打tag规范;
g-klcYQZyQ-1708334617624)]
3.8.GIT打TAG
1)打标签概述
当项目开发到一些重要阶段后,会进行软件不同版本的发布部署工作,显然如果不记录下这些重要的历史节点,后期从繁杂的提交流水看中查找会变得非常艰难,所以git提供了为开发节点打标签的功能:
![](https://file.jishuzhan.net/article/1761060859401998337/00a99511bc7a6f373cd855c173c13180.webp)
![](https://file.jishuzhan.net/article/1761060859401998337/f571413157dc1dede0ea7efeab4c7054.webp)