gitlab如何回退版本,以及强推显示remote rejected的解决办法

当项目代码因未测试的修改导致问题时,通过gitlog找到需回退的commitID,使用gitreset--hard进行回退。在gitlab中,由于master分支受保护,需先取消保护才能gitpush--force。问题解决后,应重新保护master分支。
摘要由CSDN通过智能技术生成

今天遇到一个情况,某个项目的代码,昨天被另外的同事修改了,且未测试的情况下合并了master分支上,今天上午发现task异常,于是排查到原因,先回退代码,步骤如下

1.使用命令或者在gitlab页面上查看需要回退到的版本号commitID

git log

日志显示如下:

commit bafbef5c3xxxxxxxxxxxxxxxxxxxxx (HEAD -> master, origin/master, origin/HEAD) 
Merge: 249a5c9 ce44efe
Author: san.zhang <san.zhang@xxx.com>
Date:   Mon Jul 17 17:30:04 2023 +0800
 
    Merge remote-tracking branch 'origin/master' into master
 
commit 249a5c9xxxxxxxxxxxxxxxxxxxxx
Date:   Mon Jul 17 17:29:45 2023 +0800
    移除fastjson

commit ce44efxxxxxxxxxxxxxxxxxxxxxx (xxxxx)
Merge: 3d054be c6fdcc9
Author: si.li <si.li@xxx.com>

回退到commitID为ce44efxxxxxxxxxxxxxxxxxxxxxx 的版本上,操作如下:

git reset --hard ce44efxxxxxxxxxxxxxxxxxxxxxx 

其中需要注意下不同参数的区别

  • –soft: 使用git reset --soft ,HEAD(当前分支)将被移动到指定的提交(commit),暂存区(Index)和工作目录不会被改变。这意味着在这个commit之后的所有提交都会保留在暂存区中,这样你就可以重新提交它们,或者根据需要修改它们。

  • –mixed: 这是git reset的默认模式,你可以使用git reset --mixed 或者简写为git reset 。在这种模式下,HEAD被移动到指定的提交,暂存区(Index)也会被重置,但工作目录不会被改变。这意味着在这个commit之后的所有提交都会从暂存区中移除,但它们仍然保留在工作目录中。你可以根据需要重新暂存和提交这些更改。

  • –hard: 使用git reset --hard ,HEAD被移动到指定的提交,暂存区(Index)和工作目录都会被重置。这意味着在这个commit之后的所有提交都将完全丢失,工作目录将恢复到这个commit的状态。这是一个危险的操作,因为它会永久删除未提交的更改,所以在执行此操作之前,请确保你没有未保存的工作。

总结:
–soft:仅移动HEAD,保留暂存区和工作目录。
–mixed(默认):移动HEAD,重置暂存区,保留工作目录。
–hard:移动HEAD,重置暂存区和工作目录,可能导致未提交的更改丢失。。

然后进行强推操作,将远程master分支回退到历史版本

 git push -f origin master

这时候显示错误

Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To http://xxxx:xxxx/xxxx/xxx.git
 ! [remote rejected] master -> master (pre-receive hook declined)

一般查找后发现,是因为gitlab中对master设置了保护,需要先解除保护,再推,推完后再加上保护
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击按钮“unprotect”,取消保护,再进行推送,发现正常,推送后再加上保护即可。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值