我不小心污染公司gitlab的master分支怎么办?详细教你恢复

1 篇文章 0 订阅

1 污染了本地master分支

idea上删除本地分支,然后再将远程分支pull到本地即可

2 不小心污染了远程master分支

2.1 污染过程

我们的paas平台流水线的发布流程是这样的,
(1)先从master分支拉取一个类似于feature_20240910这样的日期分支,表示当天的发版日期,然后将master分支的代码合并到我自己写的需求分支feature_ug10210中。
(2)随后再提“将需求分支feature_ug10210分支合并到日期分支feature_20240910“的mr。
(3)随后在paas平台发布流水线的时候需要使用日期分支feature_20240910作为发布的代码源,这个日期分支会在开始时就被合并到master分支,然后才会经历打包、生成镜像、容器发布、审核和运行。以上是一种敏捷发布的过程,能保证每天都可以发版。
(4)作为校招刚入职两个多月的我,有一次在线上paas分支发布日期分支feature_20240910的时候不小心选择了test分支,这导致了一部分test分支其他需求的代码合并到了master分支,代码污染了

2.2 解决方案

1 最简单的解决方案:

从脏master【历史merge记录】中找到没被污染的commit记录,迁出一个新分支master_20240910,重命名或者删除旧master,再把新分支重命名成master

2 我的方案:

考虑到master分支是被保护的,名称修改不了的,也推送不了本地的安全分支到远程master,但是可以在paas和gitlab网站上删除和新建master分支,所以我的方案是,在gitlab官网上从脏master的历史merge记录中找到没被污染的commit记录,迁出一个新分支master_20240910,删除被污染的master分支,然后再从master_20240910中新建一个master分支

3 具体如何从master分支找到没被污染的commit记录?

(1)首先是从gitlab的merge request 中查找合并记录而不是从commits中找历史记录,后者包含了脏代码的各种记录,很难找到安全的版本

在这里插入图片描述
(2)然后根据时间和关键字找到刚刚进行合并之前的一次commit sha值
在这里插入图片描述

如何进行版本回退

(3)使用使用git reset --hard abc123回退并丢弃所有未提交的变更以及当前这个版本commit:abc123之后所有的commit提交。这个命令执行后只会影响本地的master分支。
(4)因为远程master分支被保护,无法人工合并,所以需要重命名本地分支为master_20240910,然后再推送到远程的master_20240910分支(无需在远程创建,推送时自动创建)
(5)删除旧master分支,然后在paas或者gitlab官网上从master_20240910分支拉取一个新master分支

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值