前言
在GitLab上,管理员创建一个空的仓库,developer拉取空仓库后在本地的提交无法push到服务器的,有几个坑需要填一下。
问题一
如果你是developer角色的话,那么很遗憾,你拉去空仓库后在本地添加的一些文件,准备push 到服务器,发现无法push,
git push origin master:master
以上命令意思是将本地的master分支push到远程的master分支,如果远程没有该分支将会自动创建。
报错如下:
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://xxxx.com/xxxx.git'
原因是因为,developer无法创建远程的master分支,需要由管理员创建。
解决方法就是让管理员去创建好master分支,让他随便创建个文件然后push上去就ok了。
问题二
管理员创建好master分支后,这下可以提交了吧,再次push,然后又报错:
这个就很简单了,提示你需要先拉取代码,所以直接git pull。
问题三
拉取一下远程文件
git pull
这时候问题又来了
错误:
fatal: refusing to merge unrelated histories
原因是两个分支是两个不同的版本,具有不同的提交历史。
解决方案很暴力,直接强制合并:
git pull origin master --allow-unrelated-histories
问题四
合并完成后,再次提交,然后继续报错:
remote: GitLab: You are not allowed to push code to protected branches on this p roject.
没完没了,这个是因为新创建的gitlab项目,master分支默认是受保护的,只哟管理员可以提交到该分支,如果需要developer开发人员也提交,那就要改权限。
继续找管理员修改,打开gitlab项目主页
ok,这下再次提交就没问题了。
参考地址:
https://blog.csdn.net/zpwangshisuifeng/article/details/104716289/