git强制回退版本报错:GitLab:You are not allowed to force push code to a protected branch on this project

2023-12-27 04:31:39


问题描述:

在开发过程中,经常会遇到版本合并错误或者提交出现问题,而此时通常使用回退版本来解决问题。

在回退过程中,使用TortoiseGit小乌龟进行处理时,出现了报错:remote GitLab You are not allowed to force push code to a protected branch on this project。
在这里插入图片描述


原因分析:

原因很简单,就是因为向一个受保护的分支强制提交了代码。


解决方案:

版本回退的方法

使用Tortoise Git工具进行版本回退的方法,共需3步:

  1. 查看日志。
    在这里插入图片描述

  2. 回滚到指定版本。在历史信息详情中,选中需要回退的版本,右键即可看到以下内容:

在这里插入图片描述

然后选择Hard方式进行reset。

在这里插入图片描述

这三种方式的区别是:
soft方式回退版本后,工作区和暂存区中的文件都不会受到影响,可以重新提交;
mixed方式回退版本后,工作区中的文件会保留,暂存区中的文件会被重置为回退版本之前的状态;
hard方式回退版本后,工作区和暂存区中的所有文件都会被重置为回退版本之前的状态。

因为我们这里需要强制回退,故需要选择Hard。

  1. 最后重新提交就完成了回退操作。
    在这里插入图片描述
    这里我们选择force with lease。

在Git中,git push命令用于将本地的提交推送到远程仓库。而--force选项用于强制将提交推送到远程仓库,即使这样做可能会覆盖其他人的提交。
然而,force with lease是一种更安全的方式来使用强制推送。它会检查远程仓库是否包含了你本地仓库中没有的提交。如果有其他人已经向远程仓库推送了新的提交,那么force with lease会阻止你的推送,以避免覆盖其他人的工作。
换句话说,force with lease只允许你推送更新,而不是覆盖其他人的提交。它会在推送之前检查远程仓库的状态,并确保你的本地仓库是基于最新的远程仓库更改的。
使用git push --force-with-lease命令,你可以确保你的推送不会覆盖其他人的工作,同时也避免了一些潜在的问题。然而,这并不意味着force with lease可以完全消除所有推送冲突的可能性,因此在使用时仍然需要小心谨慎。


此时,也就出现了上述报错。

报错解决方法

出现了以上报错,说明我们正在尝试强制推送代码到一个受保护的分支,而没有权限执行这个操作。受保护的分支通常是指在远程仓库中设置了限制,阻止用户直接强制推送到该分支,以防止意外或恶意的更改。

解决思路也很简单,修改gitlab上的权限即可。

  1. 查看权限情况。
    在这里插入图片描述
    从这里可以看到,我们的权限情况。

为了快速解决问题,这里就不在进行具体权限调整的操作了。直接将分支的保护关闭即可,比较粗暴!

  1. 修改权限。将上面的保护内容关闭。点击上图中的unprotect按钮即可关闭。
  2. 再次进行push。此时,就可以将代码正常提交了。
  3. 这是最为重要的一步。请恢复分支保护
    在这里插入图片描述

重新输入需要保护的分支和赋予角色即可。

请注意:强制回退会删除之后的提交和更改,且无法恢复。所以在执行强制回退之前,请确保你不需要这些提交和更改,并且已经进行了适当的备份。

如果这篇文章对大家有所帮助,可以点赞+收藏+关注一下。
如果有什么需要改进的地方,请大家在评论区留下您宝贵的意见和建议,我将非常欢迎。
月空MoonSky的主页 还有很多有趣的文章,欢迎小伙伴们前去点评。
最后,祝大家圣诞节快乐🎄🎅🎁

文章来源:https://blog.csdn.net/moon_ly/article/details/135204594
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。