【解决方案 九】git push不能执行,无权限提交项目
最近遇到一个比较难缠的问题是git push不能提交到远程,总结了下各种可能,列到下边来。
1 检查SSH秘钥
首先要检查的就是自己是否有ssh的公钥了,如果没有公钥绑定到gitlab仓库,是没办法的。
-
首先配置git的邮箱和用户名,邮箱选择公司邮箱、用户名选择域账号,例如:配置名称+邮箱
git config --global user.name "tianmaolin" git config --global user.email "tianmaolin@qq.com"
-
然后进行公钥配置, ssh 生成与验证
$ ssh-keygen -t rsa -C "tianmaolin@qq.com"
输入完毕后,程序同时要求输入一个密语字符串(passphrase),空表示没有密语。接着会让输入2次口令(password),空表示没有口令。3次回车即可完成当前步骤
第2步的作用是用来生成Git的全局公钥,生成公钥后即可在如下地址获取到全局公钥:去自己的个人目录下c盘>用户>自己的用户名>.ssh应该能看到名为id_rsa.pub的文件,用notpad打开,把里面的全部内容拷贝出来。接下来找到SSH设置,将拷贝到的内容粘贴进去:
2 检查gitlab项目权限
主要验证两点,首先是是否项目开发,其次是是否有该项目权限:
首先确认项目是否有权限,是否为Private,要注意对应的权限
其次确认自己是否有该项目的权限,如果是Master和Owner就没有问题,如果是其它角色想往master分支上推,显然不对。
3 检查windows凭证
有的时候更新了密码或者账号,这个时候windows的凭证如果不更新,也是拉取不到的,在控制面板—用户账户—凭据管理器—Windows凭据—普通凭据删除掉gitlab的凭据,然后重新添加或者在git bash提醒的时候再次添加。
4 手动设置该代码关联的远程地址
在项目路径下执行该命令:git remote set-url origin xxxxxxxxxxxxx.git
,执行完成之后应该就具备了该项目的访问权限。相当于设置本地代码关联的远程地址
5 取消master的protected状态
这种情况比较特殊,在使用本地强制推送覆盖远程的命令时,master的保护机制会发生效果,不允许强制提交,这个时候只要将master设置为Unprotect即可,当然强推完最好再改回来,维护主分支的稳定性。
解决方案持续更新中,如果大家遇到类似的问题也可以留言汇集。