一、安装GitLab
详情请查看这里:超级详细的 Docker Desktop 安装 GitLab
二、创建组
1、使用root管理员权限来创建组,一个组里面包含多个项目分支,可以将用户来添加到组里进行设置权限,不同的组有不同的权限。
2、输入群组名称、描述、和可见性级别,点击创建群组
三、创建用户
1、普通用户只能访问属于自己的组的项目,管理员可以访问所有组的项目
2、输入用户名称和电子邮件,权限设置选择普通用户或者管理员权限
3、再次点击编辑修改密码
4、输入密码
5、将用户添加到组中
6、添加完之后对权限进行设置,5种权限
- Guest:可以创建issue、发表评论,不能读写版本库
- Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
- Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
- Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限
- Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限
四、项目创建 及 GitLab 操作
1、以刚才创建的用户来登陆GitLab进行项目创建
第一次登陆新用户提示需要更改密码,使用之前的密码也可以
2、点击Create a project来创建新项目
3、以自己的组来创建项目
权限分为私有、内部和公开三种可见性级别
- 私有(Private):项目访问必须明确授予每个用户。 如果此项目是在一个群组中,群- 组成员将会获得访问权限。
- 内部:该项目允许所有已登录到当前GitLab服务器的用户访问。
- 公开(Public):该项目允许任何人访问。
4、创建完之后就可以看到如下界面了
5、现在在这个组里去创建项目。
6、选择项目属于的组,因为组是私有的,所以项目也是私有的。
7、将代码导入项目
项目已经创建好了,要将本地代码提交上去。
Create a new repository:创建了空的库,然后才开始在库里面进行开发,然后提交上去就行了 Push an
existing folder:创建完库,代码已经有了,直接提交上去
下载代码库,并在代码库中创建文件提交。
8、创建一个分支
9、主干/特性开发
主干开发,一切都是master分支,不管后面来了多少个特性,提交代码都是提交到主干分支上面。
特性分支开发:来了一些需求,这就需要基于master分支创建feature特性分支。这些新的需求代码都在特性分支,特性分支开发完了,将代码提交上去了,然后触发流水线,这些流水线就是来验证特性分支的,验证没有问题,那么特性分支就需要做另外的操作,就需要将代码合并到master分支了,然后发版了。
特性分支开发
- 基于master主干分支创建版本分支(release-1.1.1)
- 基于master分支创建特性分支(feature-1, feature-2…)
- 特性分支开发完成后,将特性分支合并到版本分支
- 基于版本分支进行发布(dev环境,本地验证,UAT,预生产,生产) 发生产了也没问题,那么将版本分支合并到主干分支
- 基于master主干分支创建一个标签tag
10、拉取特性分支
为什么要拉取分支? 一个分支不够吗?
一般我们使用 master 主干分支存放最新的能够发布生产的代码,而单独创建一些特性分支来做项目需求任务的开发分支。
这样的好处是防止主干分支污染,对分支起到了保护的作用。
下面进入 demo-hello-service 项目主页,然后基于主干分支master,创建特性分支feature-1-DEV。操作如下:
11、特性分支开发与提交
12、特性分支合并操作
将特性分支 feature-1-DEV 代码合并到主干分支master Merge Request。
在这个页面,选择源分支和目标分支。
在这个页面:
- 指定合并请求的标题
- 描述信息,一般都是变更信息
- 指定主管进行审核(最终该用户决定是否合并)
- 指定进行代码审查的同事
- 合并成功后删除源分支(最后很定要删除源分支,可以先保留一个版本后再删除,此处最好取消勾选)
提交合并后,由管理员审查进行合并。
到此一个基本的项目开发提交代码过程就已经完成了。(多熟悉一下这个过程)
五、将现有的GitLab项目移至新的子组 | 项目中
您可以在左侧边栏中的Settings-> General->下执行此操作Transfer project。但是,您将需要对要转移到的那个组的管理权限。
注意: 这里需要注意的是项目移只有 Owner 才有权限操作
GitLab 操作权限:
- 1.Guest:可以创建issue、发表评论,不能读写版本库
- 2.Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
- 3.Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
- 4.Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限
- 5.Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限
六、GitLab项目的submodule操作
子模块( submodule )是一个内嵌在 git 仓库(父工程)中的 git
仓库,有点儿拗口。通过子模块,可以将外部的仓库作为子目录放到自己的仓库中,既能方便的管理依赖,又可以保持依赖本身的独立性。子模块将被记录在一个名叫 .gitmodules 的文件中,其中会记录子模块的相关信息
[submodule "module_name"] # 子模块的名称
path = file_path # 子模块在本仓库中文件的存储路径
url = repo_url # 子模块的远程仓库地址
1、新建项目
2、然后,将上面创建好的项目克隆到本地
git clone https://github.com/xugaoxiang/gitDemo.git
3、添加子模块
git submodule add https://github.com/ultralytics/yolov5.git
这时候的目录结构是这样的
4、通过 git status 查看当前状态
可以项目目录下多了个文件 .gitmodules , 这个文件是用来保存子模块的信息,子模块是 Revamp_Cuhk
5、通过 git submodule 查看子模块
git submodule
可以看到添加到 revamp 项目中的 子项目 提交版本号
6、将子模块提交到 revamp
git add
git commit -m "add drpo gitmodules"
git push origin main
然后就可以开始推送了,完成后,就可以看到了 revamp 下的 子模块了
7、克隆带有子模块的工程
克隆项目后,子模块目录默认是空的,需要我们在项目根目录下执行如下命令完成子模块的下载
git submodule init
git submodule update
或者
git submodule update --init --recursive
上面的方法,步骤繁多,比较麻烦,不推荐。可以直接在克隆的时候一起下载子模块,一气呵成,命令如下
git clone https://github.com/xugaoxiang/gitDemo.git --recursive
8、更新子模块
一般来说,子模块是不断在维护更新的,在我们自己的项目里,一般不会去改动子模块。但是如果想保持本地子项目与远程仓库版本一致,就需要去更新子模块至远程仓库的最新版
git submodule update --remote
需要注意的是,命令 git submodule update 是更新项目内子模块到最新版本
9、删除子模块
如果不再依赖子模块了,就可以将其删除了,步骤如下
git rm yolov5
然后修改 .gitmodules 将其中跟子模块相关的删除,如果是最后一个子模块的话,可以直接删除文件 .gitmodules
接着修改 .git/config,同样将对应子模块的信息删除
接下来,删除 .git 文件夹中的相关子模块文件,如这里的 yolov5
最后就可以git commit 和 git push 了