[git push]解决办法: ! [remote rejected] master -> master (pre-receive hook declined)

问题描述

今天准备上传一个项目到GitLab上,但是试了很多次都上传不上去,报错如下:

第一种:! [rejected]        master -> master (fetch first)
第二种:! [rejected]        master -> master (non-fast-forward)
第三种:! [remote rejected] master -> master (pre-receive hook declined)

一开始还以为自己用户名和密码错误,试了好多次,网上搜所索也没搜索到明确的结果,不过最后还是找到了解决的办法。

分析

git push不上去的原因在于所push的分支权限为protected,只有项目的管理员或者项目的管理员指派的具有相应权限的人才能进行push,要进行项目的push,有如下两种方法:

解决①

  • 将所要push的内容所在的分支的protected权限关闭

(1)、进入所在项目的settings

(2)、点击进入Protected branches,点击unprotectedmaster分支的权限改变,即关闭masterprotected权限
(3)、通过git pull 先将本地库更新到与远程库一致的版本,但要注意本地库后来做的修改可能被覆盖,最好使用git fetch(不会自动合并),查看更新情况再有选择合并,或者先将本地库修改过的文件备份,git pull后再重新修改
(4)、再运行git push即可成功。

解决②

  • 新建其它分支,将项目push到新建的分支上,后期再进行merge

(1)、新建分支

git branch 分支名

(2)、切换分支

git checkout 分支名

(3)、进行项目上传

git add .
git commit -m "提交的信息"
git remote add origin 远程仓库地址 # 也可加上-f强制推送
git push -u origin 分支名

解决③

  • 暴力型方案:

git提供了一种强制上传的方式:git push -f ,它会忽略版本不一致等问题,强制将本地库上传的远程库,但是一定要谨慎使用,因为-f会用本地库覆盖掉远程库

如果远程库上有重要更新,或者有其他同伴做的修改,也都会被覆盖,所以一定要在确定无严重后果的前提下使用此操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢前端的后端MelodyJerry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值