前言】当你看到这篇文章时,很高兴,你不用再去各大网站再去搜索这个问题的解决方案了,因为这篇文章可以帮你彻底解决问题。请耐心地阅读完。
本文假设了两个用户 userA 和 userB ,userA的github项目名为 test
当你在使用git push项目的时候,你遇到了这个问题:
MacBook-Pro:BSBacktraceLogger $ git push -u origin master
remote: Permission to userA/test.git denied to userB.
fatal: unable to access 'https://github.com/userA/test.git/': The requested URL returned error: 403
userA/test.git denied to userB.
fatal: unable to access 'https://github.com/userA/test.git/': The requested URL returned error: 403
报了403,说明访问被拒绝。
意思很明白,userB没有权限对userA的test进行push更改。
这时你已经使用了如下命令去配置全局用户
git config --global user.name userA
git config --global user.email userA@Email.com
并且很明确当前用户已经是userA,但还是说userB没权限。。
什么原因?
由于该电脑使用git bash配过SSH,系统已经将指向github.com的用户设置为了userB,每次push操作的时候,都将读取到userB的用户信息,类似于记住密码。
如何解决?
1、找到userB生成的SSH公钥,添加到userA的github后台;
2、将userB添加为userA项目的contributer;
如何查看当前mac 上的userB的SSH公钥呢?
MacBook-Pro:BSBacktraceLogger$ ls -al ~/.ssh
total 24
drwx------ 5 *** staff 160 1 8 2018 .
drwxr-xr-x@ 51 *** staff 1632 7 13 11:23 ..
-rw------- 1 *** staff 1679 12 12 2016 id_rsa
-rw-r--r-- 1 *** staff 398 12 12 2016 id_rsa.pub
-rw-r--r--@ 1 *** staff 984 1 8 2018 known_hosts
MacBook-Pro:BSBacktraceLogger $ open ~/.ssh
- 在终端输入ls -al ~/.ssh 可以看到有一个id_rsa.pub公钥
- 将这个公钥的内容添加到userA的SSH keys
- 将userB加入到userA的Collaborators中
- 现在就可以push了
参考原文:https://blog.youkuaiyun.com/klxh2009/article/details/76019742 - https://shinancao.github.io/2016/12/18/Programming-Git-1/