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

http://stackoverflow.com/questions/7438313/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

posted @ 2013-08-11 03:25  shines77  阅读(2841)  评论(0编辑  收藏  举报