场景还原:因为提交了错误的代码到远程master,此时本地通过git reset commitId^回滚到以前的某个版本,修改完之后,不能pull,因为pull的话又会把远程的错误代码覆盖本地,所以此时需要直接push,但是直接push会由于和远程版本已经不同步了,所以直接push会被拒,所以此时需要强制push: git push origin master --force。
强制推送命令
$ git push -u origin master -f
推送命令后出现了这样的情况
E:\xxx>git push -f origin master
Password for 'http://xxx@git.xxx.cn':
Total 0 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To http://git.xxx.cn/xxx/xxx
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://xxx@git.xxx.cn/xxx/xxx.git'
"GitLab: You are not allowed to force push code to a protected branch on this project."
提示没有权限强制推送
处理办法一:
后来在网上进行一番搜索,发现了问题
就是这里,左边的意思是受保护的分支,受保护的分支不允许进行强制推送,解除掉受保护的分支即可,UnProtect解除保护,然后再次进行强制推送命令$ git push -u origin master -f
。
推完之后再回到这里进行重新保护master分支,选择分支,点击Protect即可
处理办法二:
新建个文件夹,备份本地的正确代码,然后本地pull下,此时版本就和远程一致了,就可以正常push成功了,但是现在代码是远程的错误代码,所以把备份的正确代码覆盖本地的错误代码,这样之后,就可以愉快的正常push成功了!
网友评论