企业正常使用gitlab时,一般由项目经理(超级管理员)手动创建开发者账户信息,然后将账户发送给开发者,以便登录使用;
流程如下:
点击创建用户按钮;
创建完用户后,可能指定的邮件地址接收不到账户激活信息,我们只直接添加密码信息:
处于工作量的考虑,对于我们来说,超级管理员也可临时开启登录功能(只有超级管理员才拥有该权限):
操作流程如下:
点击保存更改,普通用户就可以正常注册了;
这样访问http://47.96.143.141:9999/users/sign_in也可注册;
点击注册:
填写账户信息:
选择账户的角色:
点击get started 自动登录进入操作界面:
选择界面汉化:
说明:
【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
构建项目组一般是由项目经理来构建:
注意事项:我们的组名:jrzs_147_g1,格式:项目名称_期_gN
配置ssh免密登录(可选项):
ssh-keygen -t rsa (3个回车)
接下来,git init初始化本地git仓库,并设置用户相关信息,这样提交时就会显示对应配置的用户名信息了:
git config user.name 'lisi1'
git config user.email '[email protected]'
开发组长将初始化代码提交到远程仓库,然后构建dev分支:
平台构建好dev分支后(也可本地构建dev分支,然后推送到远程),本地需要git fetch刷新分支最新配置;
团队开发时为了避免一些重要的开发分支(master)被意外篡改,管理人员需要将这些重要的分支设置分支保护,这样普通开发人员就不能直接将代码进行推送和合并了,需要专门的分支管理人员(开发组长)维护重要分支的提交、合并操作;
设置分支保护流程如下:
临时禁用自动持续集成:
构建一个文件夹,然后在文件夹中克隆工程基础代码:
#因为项目的私有的,所以克隆代码时,要制定对应的账户和密码,否则无权限下载;
#格式:git clone http://账号:密码@47.96.143.141:9999/jrzs_142_tmp_g2/jrzs_stock_tmp.git
$ git clone http://lisi2:[email protected]:9999/jrzs_142_tmp_g2/jrzs_stock_tmp.git
然后使用idea打开代码,并设置当前用户信息:
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
接下来开发人员手动检出远程dev分支:
这样本地就会构建一个dev分支!
对于普通开发人员来说,工作都围绕dev分支展开,而实际开发中,为了避免直接污染dev分支,一般开发人员会在dev的基础上checkout出一个功能分支:比如feature_login
在功能分支下开发完毕后,将代码合并到dev分支下:
到此,feature_login代码就合并到dev分支下了!
开发人员自测代码无问题后,就可以将代码提交到远程dev分支了:
说明:开发者推送代码到dev后,一般测试人员会介入,测试ok后,分支管理人员会进行受保护分支的合并工作(在自动化工作流汇中,测试通过后,会自动合并);
管理员在合并代码之前,先把最新的dev代码拉去到本地,然后做基本的审查工作:
此时本地仓库拉取到了最新的dev代码,代码检查无误后合并到master分支:
代码合并到master分支后,提交到远程的master分支即可;
不同的开发人员共同维护master和dev分支,最终提交记录线:
反例:
跨域不同的分支 合并代码,容易丢失代码;
通过revert提交则会产生新的提交记录;
本质上就是在新的提交记录下做了逆向操作,实现回滚;
获取通过reset回滚时,最新的提交记录不会消失;
当项目开发到一些重要阶段后,会进行软件不同版本的发布部署工作,显然如果不记录下这些重要的历史节点,后期从繁杂的提交流水看中查找会变得非常艰难,所以git提供了为开发节点打标签的功能:
详见:day07-实战\资料\3.项目使用GitLab流程\git打tag规范;
g-klcYQZyQ-1708334617624)]
当项目开发到一些重要阶段后,会进行软件不同版本的发布部署工作,显然如果不记录下这些重要的历史节点,后期从繁杂的提交流水看中查找会变得非常艰难,所以git提供了为开发节点打标签的功能: