文章目录
- 一、简介
- 二、SSH密钥
- 三、汉化
- 四、群组
- 五、项目
- 1、创建
- 2、导入已有的项目
- 3、添加开发者
- 4、合并方式设置(重要)
- 5、仓库
- 6、分支保护(重要)
- 7、开发过程(重要)
- (1)检出项目到本地
- (2)创建功能分支
- (3)创建提交
- (4)推送功能分支到GitLab仓库
- (5)创建合并请求
- (6)代码审核以及合并
- (7)开发者删除功能分支
- (8)拉取远程仓库开发分支到本地
- 8、协同以及冲突解决(重要)
- 9、提交记录
- 六、议题
- 1、建立里程碑
- 2、建立议题
- 3、看板
- 七、wiki
一、简介
GitLab是一个可以私有化部署的Git项目仓库。它提供了强大的功能,包含了不仅仅以下功能:
- 基础的项目托管功能
- 分支权限管理
- 支持合并请求(Merge Request)
- 代码审查(Code Review)
- 支持议题(issue)创建
- 支持里程碑
- 支持CI/CD
- 内置了wiki
二、SSH密钥
使用给定账户登录后,如果要从仓库检出项目到本地,一般不使用https的方式,而是使用ssh,首先需要配置SSH密钥,步骤如下:
- 进入设置页面
- 进入SSH密钥设置页面
三、汉化
四、群组
群组,可以理解为项目的分类,比如:当有很多项目,在查找某一个项目的时候,会出现很长的项目列表,这个时候可以把项目按照不同的类别进行分类,这样就可以快速的定位到所要查找的项目的所在位置。
实际使用中,管理人员会预先创建好群组,然后设置权限,并把对应的开发者添加进来,开发者正常不创建群组。
如上图,这里总共有5个群组,其中第1个群组包含了2个子群组。
五、项目
项目,开发者工作中直接操作的对象。它会被管理员预先创建并设置权限,开发者正常不创建项目。项目在创建时会被归类到某一个群组下。
如上图,群组下包含了2个项目。
1、创建
2、导入已有的项目
如果已经存在项目,比如要导入Gogs上的项目,可以如下操作:
3、添加开发者
注意: 如果没有找到开发者,则对应的开发人员需要先登录下。
4、合并方式设置(重要)
重要: 基于公司规定的Git使用规范,必须对每个项目进行合并方式进行设置,必须设置为Fast Forward模式。
5、仓库
当项目中已经提交了代码或其他资源时,则会创建仓库。
6、分支保护(重要)
主干分支master和开发分支develop/版本号必须进行保护,只允许管理员操作。正常默认分支选择当前的开发分支。
受保护且不允许推送的分支可以在本地进行提交,但是无法推送到仓库,否则会弹窗报错,如:
7、开发过程(重要)
(1)检出项目到本地
(2)创建功能分支
注意: 要从开发分支创建。
(3)创建提交
(4)推送功能分支到GitLab仓库
点击链接可以打开创建合并请求的页面。如:
说明: 可以选择在功能分支创建完毕就推送到GitLab仓库,也可以选择功能都在本地开发完毕在推送到GitLab仓库,建议创建完毕就推送,以防有些情况下本地电脑故障而导致代码没有备份而丢失。
(5)创建合并请求
可以在页面中点击任意有创建合并请求的按钮,如:
(6)代码审核以及合并
鼠标移到指定行,可以点击浮窗添加评论,如:
分支开发者必须对评论进行处理然后点击勾选,审核员才能合并,如:
否则,审核员无法合并,如:
当勾选后,审核员可以合并,如:
(7)开发者删除功能分支
此时开发者的本地分支feature/add_config_file还存在,可以删除。
先切换到其他分支,比如切换到开发分支develop/1.0.0,如:
删除本地分支,如:
删除远程追踪分支,如:
(8)拉取远程仓库开发分支到本地
8、协同以及冲突解决(重要)
在实际开发过程中,由于多人协同工作,开发分支总是一直向前走,所以一些落后的功能分支提交合并请求后并无法直接合入,例如:
点击变基,后会自动变基,成功后,需要再次点击合并,如:
这是最理想的状态,但是当修改到同一处代码时,则会有冲突,无法直接合并,如:
那么就需要开发者先在本地进行,把功能分支变基到开发分支并解决冲突才可以合并,操作步骤为:
- 在本地切换到开发分支develot/1.0.0,拉取GitLab仓库代码。
- 在本地切换到功能分支,然后变基到本地开发分支,如:
- 把功能分支再次推送到GitLab仓库,需要强制推送,如:
- 审核人员重新进入合并页面(或者刷新下)可以进行合并,如:
9、提交记录
采用此种Git操作流程,提交日志并不总是时间顺序的,如:
六、议题
当项目组开出或者拿到功能需求时,产品和研发管理者需要制定出研发周期,并进行任务安排,可以借助于议题和里程碑进行任务管理。
1、建立里程碑
2、建立议题
3、看板
通过看板可以跟踪项目进度,如:
七、wiki
GitLab内置了wiki系统,可以编写项目内相关文档,如: