GitLab Master或者受保护分支 回滚特定版本

目录

1、使用场景

2、实践操作

2.1 进入gitlab网址,找到项目的历史

2.2 gitlab-master取消保护分支

2.3、找到自己项目所在的文件夹

2.4 .输入命令,本地回滚到指定的版本

2.5 输入Push命令

3、成果展现

4、参考文章


1、使用场景

       应用场景,dev分支合并到master之后,发现不是应该提交的,所以master分支进行回滚。我的是因为同事直接在Master版本上进行修改。Stable版本无法合并到Master分支上啦。于是需要回滚Master到上一版本。

2、实践操作

2.1 进入gitlab网址,找到项目的历史

2.2 gitlab-master取消保护分支

       如不取消master的保护分支在push的会报错。操作步骤如下图所示

找到Branches----project setting --Protected Branches–去掉master的protected即可

2.3、找到自己项目所在的文件夹

2.4 .输入命令,本地回滚到指定的版本

备注:master取消保护分支--如果不取消保护就报错

$ git reset --hard XXXXX(回滚的版本hash值)

2.5 输入Push命令

备注:如不取消master的保护分支会报错

$ git push -f

3、成果展现

4、参考文章

GitLab[master]回滚特定版本  gitlab分支切换、撤销操作、远程仓库回滚分支提交

### 如何在 Git 中禁止分支合并并配置权限控制 为了实现对特定分支的保护以及防止其被意外合并,Git 提供了一些内置功能和工具。以下是具体方法: #### 1. 使用受保护分支 (Protected Branches) 通过 GitHub 或其他 Git 托管平台(如 GitLab),可以启用 **受保护分支** 功能来限制某些操作,比如推送或合并。 - 在托管平台上进入项目的 `Settings` -> `Repository` -> `Protected branches` 页面[^5]。 - 添加需要保护的目标分支名称(例如 `main` 或 `develop`)。 - 启用选项以阻止任何人向该分支直接推送代码或强制推送。 - 可选地禁用对该分支的合并请求批准前未满足条件的操作。 此设置可有效防止未经授权的用户执行敏感操作,从而减少误操作的风险。 #### 2. 利用钩子脚本 (Hooks) 自动检测非法合并 如果希望更细粒度地控制哪些分支能够合并到目标分支,可以在服务器端定义一个自定义的 `post-merge` 钩子脚本来拦截不合法的行为。 当发生一次成功合并之后,`$GIT_REFLOG_ACTION` 环境变量会记录下刚刚发生的动作详情[^2]。利用这一点编写逻辑判断源分支是否属于允许列表之外;如果是的话就回滚此次变更。 下面是一个简单的 Shell 脚本例子用于演示目的: ```bash #!/bin/bash protected_branch="master" disallowed_merge_from=("feature/unstable" "hotfix/urgent") current_branch=$(git rev-parse --abbrev-ref HEAD) if [[ "$current_branch" == "$protected_branch" ]]; then last_action=${GIT_REFLOG_ACTION} if echo "${last_action}" | grep -q 'pull'; then merged_ref=$(echo ${last_action} | awk '{print $NF}') for disallowed in "${disallowed_merge_from[@]}"; do if git merge-base --is-ancestor $disallowed $merged_ref; then echo "Error: Merging from '$disallowed' is not allowed." exit 1 fi done fi fi ``` 上述脚本需放置于 `.git/hooks/post-merge` 文件位置,并赋予可执行权限以便生效。 #### 3. 推送权限管理 即使设置了严格的分支策略,在实际工作中仍可能遇到因缺乏适当推送权利而导致流程中断的情况。因此还需要确认团队成员各自具备恰当级别的访问许可[^4]。 对于那些仅负责开发而不应参与最终部署环节的人来说,他们不必获得针对生产环境关联分支(像 master/main)的写入能力。这一步骤通常由管理员手动调整或者借助 CI/CD 流程自动化处理。 --- ### 总结 综合运用以上三种方式——即启用了基于 Web UI 的防护机制、定制化客户端验证程序以及合理分配职能角色下的数据流动界限——就可以构建起一套较为完善的预防措施体系,用来抵御潜在风险事件的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值