remote: GitLab: You are not allowed to force push code to a protected branch on this project.

在这里插入图片描述

问题

真实场景: 项目需求马上准备上线了,所以提前将需求版本分支合并(merge)到了主分支(master),然后打了版本 Git Tag(v1.0.1),上一个版本 Git Tag 是 v1.0.0,这个时候突然通知我说这个版本影响太大,现在用户使用频繁,为了保证稳定性,延迟到下月中旬上线。但是为了后续其他需求的开发,必须保证主分支(master)还是之前的代码(v1.0.0的代码),所以我只能回退(reset)版本了。然后就出现了回退失败的问题,下面是我执行的步骤:

git show v1.0.0    // 拿到commit 672f634aa52215
git reset --hard 672f634aa52215  // 执行回退
git push -f   // 强制推送到远端

出现的错误提示:

remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To git.********.git
 ! [remote rejected] master -> master (pre-receive hook declined)
错误:无法推送一些引用到 '*************.git'

这个错误的意思,当前的分支受保护,当你强制推送的时候是无法成功的。(我还试着新建了一个新分支,新建分支是可以强制推送的,但是merge到主分支时,主分支不承认更改的内容,所以失败了,,,)

解决方法

查阅资料后,发现是 gitlab 设置了主分支保护,所以我做了下面的更改:

gitlab路径:项目/Settings/Repository/Protected Branches

在这里插入图片描述
大家看,这里对master做了分支保护。怎么解决呢?直接点击该分支旁的 Unprotect 按钮,就解除保护了,然后我又在本地主分支上,再次执行 git push -f 就成功了。

但是为了避免后续出现问题,建议重新设置主分支(master)保护。
在这里插入图片描述
大家还有什么更好的办法呢?欢迎在评论区讨论。。。

在这里插入图片描述

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值