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

今天遇到一个情况,某个项目的代码,昨天被另外的同事修改了,且未测试的情况下合并了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”,取消保护,再进行推送,发现正常,推送后再加上保护即可。文章来源地址https://uudwc.com/A/xG5jq

原文地址:https://blog.csdn.net/zzs1067632338/article/details/131781475

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年10月09日 17:16
下一篇 2023年10月09日 19:17