github--403错误
错误信息如下:
$ git push origin master error: The requested URL returned error: 403 while accessing https://github.com/ shines77/gzmalloc.git/info/refs?service=git-receive-pack fatal: HTTP request failed
相关解决办法可参考如下两篇网文:
(1). github初试-403错误
http://www.cnblogs.com/hanxiangduo/archive/2012/09/03/github.html
(2). Pushing to Git returning Error Code 403 fatal: HTTP request failed
(1), (2)文中提到了解决的办法是把项目的URL路径由https改为ssh:
git remote set-url origin ssh://git@github.com/shines77/gzmalloc.git
改了以后, 在Git Bash命令行模式下执行git push origin master正常了, 但是使用TortoiseGit推送依然报错:
Disconnected: No supported authentication methods available (server sent: publickey)
原因是TortoiseGit不能直接使用git的ssh的私钥, 所以要用PuttyGen导入git产生的ssh私钥, 产生TortoiseGit能够识别的putty私钥和公钥.
这样的方法虽然通用, 但是比较麻烦, 后来我看到(2)文中有人提到由
https://shines77@github.com/shines77/gzmalloc.git
改成
ssh://git@github.com/shines77/gzmalloc.git
就成功了, 其实提问者问题里使用的就是 https://shines77@github.com/shines77/gzmalloc.git 这个的格式, 没太注意看.
看到这样的格式, 我就在TortoiseGit试了一下, 竟然可以push了.
GitHub现在网站上提供的https路径格式是:
https://github.com/shines77/gzmalloc.git
只要把https路径改为:
https://你的github用户名@github.com/shines77/gzmalloc.git
即
https://shines77@github.com/shines77/gzmalloc.git
即可, 具体原因不明.
这样用Git Bash和TortoiseGit都可以pull和push了, 简单快捷.
这里说一下产生这个错误的原因, 是因为我有两个github帐号, 我想用这两个的帐号维护各自帐号下的代码仓库.
本来只使用一个github帐号维护其帐号下的代码仓库时, 使用默认的https路径是没有问题的, 但使用第二个github帐号维护第二个帐号下的代码仓库时,
就出现了上述的403错误, 就算我把全局设置.gitconfig里和TortoiseGit中该仓库下的email和name修改为第二个帐号, 也一样不行, 使用上面的方法就OK了.
我猜出现这种情况的原因, 大概是由于有两个github帐号, 所以必须指定具体是哪个帐号才能正常访问.
附:
PuttyGen下载地址
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html