gitlab分支保护

news/2024/11/30 0:56:52/文章来源:https://www.cnblogs.com/yinzhengjie/p/18577846

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

目录
  • 1.开发者无法推送代码到master分支案例
    • 1.1 查看jasonyin2020角色
    • 1.2 查看jasonyin2020有权限的相关项目
    • 1.3 使用jasonyin2020用户拉取meta-data项目所有分支到本地
    • 1.4 使用jasonyin2020用户推送数据到dev分支
    • 1.5 使用jasonyin2020用户推送数据到master分支会失败(gitlab默认的保护分支)
  • 2.使用管理员查看gitlab项目的默认分支保护
    • 2.1 查看群组信息
    • 2.2 查看dev组的meta-data项目
    • 2.3 查看默认的分支保护
  • 3.解决分支保护的思路
  • 4.jasonyin2020用户发起合并代码请求
    • 4.1 jasonyin2020用户创建合并请求
    • 4.2 jasonyin2020用户创建合并请求成功
    • 4.3 项目管理员root查看合并请求
    • 4.4 项目管理员root批准合并请求
  • 5.jasonyin2020开发的代码成功合并

1.开发者无法推送代码到master分支案例

1.1 查看jasonyin2020角色

如上图所示,jasonyin2020用户的角色是开发者(Developer)。与此同时,jasonyin2020用户属于dev组哟。

1.2 查看jasonyin2020有权限的相关项目

如上图所示,jasonyin2020用户对dev组的meta-data项目有权限哟。

1.3 使用jasonyin2020用户拉取meta-data项目所有分支到本地

	(1)使用jasonyin2020用户拉取meta-data项目的master分支
[root@ubuntu11.yinzhengjie.com ~]# cd /tmp/
[root@ubuntu11.yinzhengjie.com tmp]# 
[root@ubuntu11.yinzhengjie.com tmp]# git clone http://gitlab11.yinzhengjie.com/dev/meta-data.git
Cloning into 'meta-data'...
Username for 'http://gitlab11.yinzhengjie.com': jasonyin2020
Password for 'http://jasonyin2020@gitlab11.yinzhengjie.com': 
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 24 (delta 4), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (24/24), done.
Resolving deltas: 100% (4/4), done.
[root@ubuntu11.yinzhengjie.com tmp]# 
[root@ubuntu11.yinzhengjie.com tmp]# cd meta-data/
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# git branch
* master
[root@ubuntu11.yinzhengjie.com meta-data]# (2)使用jasonyin2020用户拉取meta-data项目的dev分支
[root@ubuntu11.yinzhengjie.com meta-data]# cat index.html   # 拉取数据前,先查看首页文件内容。
<h1>项目成立</h1>
<h1>VR功能</h1>
<h1>VIP功能</h1>
<h1>修复Bug成功</h1>
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# git checkout -b dev
Switched to a new branch 'dev'
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# git branch
* devmaster
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# git remote -v
origin	http://gitlab11.yinzhengjie.com/dev/meta-data.git (fetch)
origin	http://gitlab11.yinzhengjie.com/dev/meta-data.git (push)
[root@ubuntu11.yinzhengjie.com meta-data]# [root@ubuntu11.yinzhengjie.com meta-data]# git pull origin dev
Username for 'http://gitlab11.yinzhengjie.com': jasonyin2020
Password for 'http://jasonyin2020@gitlab11.yinzhengjie.com': 
From http://gitlab11.yinzhengjie.com/dev/meta-data* branch            dev        -> FETCH_HEAD
Updating 37f7b35..19587c5
Fast-forward.gitignore | 9 +++++++++index.html | 4 ++++2 files changed, 13 insertions(+)create mode 100644 .gitignore
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# cat index.html 
<h1>项目成立</h1>
<h1>VR功能</h1>
<h1>VIP功能</h1>
<h1>修复Bug成功</h1>
<h1>真人秀</h1>
<h1>点赞,互动</h1>
<h1>美颜,滤镜</h1>
<h1>开直播,下播</h1>
[root@ubuntu11.yinzhengjie.com meta-data]# 

1.4 使用jasonyin2020用户推送数据到dev分支

	(1)修改数据
[root@ubuntu11.yinzhengjie.com meta-data]# cat index.html 
<h1>项目成立</h1>
<h1>VR功能</h1>
<h1>VIP功能</h1>
<h1>修复Bug成功</h1>
<h1>真人秀</h1>
<h1>点赞,互动</h1>
<h1>美颜,滤镜</h1>
<h1>开直播,下播</h1>
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# echo "<h1>电商平台</h1>"  >> index.html 
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# cat index.html 
<h1>项目成立</h1>
<h1>VR功能</h1>
<h1>VIP功能</h1>
<h1>修复Bug成功</h1>
<h1>真人秀</h1>
<h1>点赞,互动</h1>
<h1>美颜,滤镜</h1>
<h1>开直播,下播</h1>
<h1>电商平台</h1>
[root@ubuntu11.yinzhengjie.com meta-data]# (2)提交数据到本地仓库
[root@ubuntu11.yinzhengjie.com meta-data]# git add .; git commit -m '电商'
[dev 99222c1] 电商1 file changed, 1 insertion(+)
[root@ubuntu11.yinzhengjie.com meta-data]# (3)推送代码到远程仓库
[root@ubuntu11.yinzhengjie.com meta-data]# git push origin dev
Username for 'http://gitlab11.yinzhengjie.com': jasonyin2020
Password for 'http://jasonyin2020@gitlab11.yinzhengjie.com': 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 2 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes | 332.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: 
remote: To create a merge request for dev, visit:
remote:   http://gitlab11.yinzhengjie.com/dev/meta-data/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote: 
To http://gitlab11.yinzhengjie.com/dev/meta-data.git19587c5..99222c1  dev -> dev
[root@ubuntu11.yinzhengjie.com meta-data]# 

1.5 使用jasonyin2020用户推送数据到master分支会失败(gitlab默认的保护分支)

	(1)修改数据并提交代码到本地仓库
[root@ubuntu11.yinzhengjie.com meta-data]# git branch
* devmaster
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# git branchdev
* master
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# cat index.html 
<h1>项目成立</h1>
<h1>VR功能</h1>
<h1>VIP功能</h1>
<h1>修复Bug成功</h1>
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# echo "<h1>抖+投流...</h1>" >> index.html 
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# cat index.html 
<h1>项目成立</h1>
<h1>VR功能</h1>
<h1>VIP功能</h1>
<h1>修复Bug成功</h1>
<h1>抖+投流...</h1>
[root@ubuntu11.yinzhengjie.com meta-data]# 
[root@ubuntu11.yinzhengjie.com meta-data]# git add .; git commit -m '抖加'
[master 3c59b67] 抖加1 file changed, 1 insertion(+)
[root@ubuntu11.yinzhengjie.com meta-data]# (2)使用jasonyin2020用户推送代码到master失败,因为该分支被保护啦~
[root@ubuntu11.yinzhengjie.com meta-data]# git push origin master
Username for 'http://gitlab11.yinzhengjie.com': jasonyin2020
Password for 'http://jasonyin2020@gitlab11.yinzhengjie.com': 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 295 bytes | 295.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: GitLab: You are not allowed to push code to protected branches on this project.
To http://gitlab11.yinzhengjie.com/dev/meta-data.git! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://gitlab11.yinzhengjie.com/dev/meta-data.git'
[root@ubuntu11.yinzhengjie.com meta-data]# 

2.使用管理员查看gitlab项目的默认分支保护

2.1 查看群组信息

如上图所示,使用管理员root用户登录,查看dev组的项目。

2.2 查看dev组的meta-data项目

如上图所示,查看dev组的meta-data项目。温馨提示,不一定必须使用root用户登录,凡是对dev组的meta-date拥有Owner权限的用户均可哟~

2.3 查看默认的分支保护

如上图所示,依次点击后,就可以查看到"受保护的分支",点击"展开"按钮,就可以看到如下图所示的图片。很明显,master分支属于默认的分支保护,即默认情况下只有Maintainer及以上的角色权限才能进行代码的合并和推送哟~

3.解决分支保护的思路

思路一:取消分支保护,这样任意有权限访问项目的用户均可以合并代码和推送代码。优势:所有用户都能推送代码,开发人员操作起来比较方便。缺点:正式因为所有人都能推送代码到master分支,很可能某个开发写的程序未经过充分测试而在运行过程中差生bug,导致程序崩溃的现象。思路二:使用默认的分支保护。优势:只有部分拥有相应角色的用户才能推送或合并代码到master分支。起到了一定的分支保护的作用。限制了大部分用户的行为。缺点:需要运维或开发人员手动合并代码。

4.jasonyin2020用户发起合并代码请求

4.1 jasonyin2020用户创建合并请求

如上图所示,我们可以发起"创建合并请求"。并按照下图的方式进行提交即可。

4.2 jasonyin2020用户创建合并请求成功

如上图所示,成功创建了合并请求啦。重新刷新页面可以看到如下图所示的信息。

4.3 项目管理员root查看合并请求

如上图所示,使用meta-data管理员进行登录并查看该项目,效果如下图所示。

4.4 项目管理员root批准合并请求

如上图所示,查看到jasonyin2020用户发起的合并请求,如下图所示,点击"批准",和"合并"

5.jasonyin2020开发的代码成功合并

如上图所示,代码和合并成功啦。如下图所示,代码合并成功发现dev分支也被删除啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843747.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python绘制南北极地图

import matplotlib.pyplot as plt import numpy as np import cartopy.crs as ccrs import cartopy.feature as cfeature import matplotlib.path as mpathdef plot_polar_map(dmeridian: float = 30.0, # 经度网格线间隔dparallel: float = 15.0): # 纬度网格线间隔"&q…

开源 - Ideal库 - Excel帮助类,TableHelper实现(二)

本文实现对象集合与DataTable的转换,包括按列名数组、列名-类型键值对、类创建表格的方法,并对类进行类型校验和反射获取属性信息,单元测试代码已上传至代码库。书接上回,我们今天开始实现对象集合与DataTable的相互转换。01、接口设计 上文中已经详细讲解了整体设计思路以…

大语言模型中的MoE

1.概述 MoE代表“混合专家模型”(Mixture of Experts),这是一种架构设计,通过将不同的子模型(即专家)结合起来进行任务处理。与传统的模型相比,MoE结构能够动态地选择并激活其中一部分专家,从而显著提升模型的效率和性能。尤其在计算和参数规模上,MoE架构能够在保持较…

ssh控制远程设备连接wifi

查看wifisudo nmcli device wifi连接wifisudo nmcli device wifi connect MERCURY_21B8 password 密码提示连接成功Device wlan0 successfully activated with 5c7d67b4-145d-4848-83cf-3b51795503fb

Kubeapps可视化管理Helm Chart包

目录一.基于helm部署kubeapps1.kubeapps介绍2.添加kubeapps的repo3.搜索kubeapps4.下载指定的kubeapps版本5.基于helm部署kubeapps6.访问kubeapps的WebUI二.通过kubeapps部署应用案例1 通过kubeapps查看已经部署的Chart2.通过kubeapps搜索Chart信息 一.基于helm部署kubeapps 1.…

剪映设置封面时候如何防止文字遮挡人物 All In One

剪映设置封面时候如何防止文字遮挡人物 All In One PS 图层叠加 / 前景后景 / 透明度 照片 人物抠图 + 画中画剪映设置封面时候如何防止文字遮挡人物 All In One 原理分析 PS 图层叠加 / 前景后景 / 透明度 照片 人物抠图 + 画中画 solutionsFilmora ???人物抠图 图层叠加 图…

聊一下怎么10分钟速水中危CVE

怎么在10分钟里速水一个中危CVE题目是真的。今天晚上刚接触关于CVE的审计和提交。只能说:牛逼的是真牛逼,水的是真水。 我接下来教你,怎么在10分钟里找到一个CVE的中危漏洞并且提交。然后你就可以去咸鱼接单了,一个一铂快 打开https://code-projects.org/ 随机找一个水项目…

2024-2025-1 20241403 《计算机基础与程序设计》第十周学习总结

学期2024-2025-1 学号20241403 《计算机基础与程序设计》第十周学习总结 作业信息这个作业属于哪个课程 <班级的链接>2024-2025-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)这个作业要求在哪里 <作业要求的链接>2024-2025-1计…

《Django 5 By Example》阅读笔记:p388-p454

《Django 5 By Example》学习第 15 天,p388-p454 总结,总计 66 页。 一、技术总结 1.celery 我觉得书中这种用法太简单了。 2.flower 用于监控 celery。 # 安装 pip install flower # 启动 celery -A myshop flower --basic-auth=root:root # 访问 http://127.0.0.1:555…

java学习11.29

去年22级报销管理系统基本完成,出差报销申请撤销,审批功能基本完成

Kustomize 设计理念与使用说明

Kustomize 设计理念与使用说明 一、设计理念 Kustomize 的设计理念是基于"基础配置 + 补丁"的模式,这里解释一下为什么需要在 base 目录下创建基础配置:基础配置的重要性:base 目录下的配置是所有环境共享的基础配置 包含了服务最基本的定义和配置 确保了不同环境…

【评价指标】ROC曲线与AUC

一、前置知识 ​ 真阳性(TPR):正样本被正确分类个数与所有正样本的总数的比值 \[TPR = \frac{TP}{TP+FN} \]​ 假阳性(FPR):负样本被错误分类个数与所有负样本的总数的比值 \[FPR=\frac{FN}{FN+TN} \]​ 其中,TP表示正确分类的正样本,TN表示正确分类的负样本,FN表示错误分…