最近遇到一个比较难缠的问题是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即可,当然强推完最好再改回来,维护主分支的稳定性
在这里插入图片描述

解决方案持续更新中,如果大家遇到类似的问题也可以留言汇集。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐