Eclipse:无法推送到Github,授权失败

时间:2016-09-28 16:33:51

标签: eclipse egit

Eclipse / EGit / Github昨天一切正常。我今天早上从Eclipse收到了“你有更新”的消息,并对所有内容进行了一般软件更新。

当我尝试从Github上的私有项目(团队 - > Pull)中提取更改时,我收到了授权错误。好的,per this answer我在Window中删除了我的安全凭证 - >偏好 - >一般 - >安全 - >安全存储 - >内容 - >删除。试图拉,在提示符下输入我的凭据,它运行正常。

但是当我尝试推送(团队/推送到上游)时,我得到“推送到myproject失败 - 来源,https://github.com/username/myproject.git:401需要授权”

如果我转到命令行并输入“git push origin master”,它可以正常工作。

所以看起来Eclipse发生了不好的事情。任何人都知道如何从Eclipse中解决这个授权错误?

(我不是在Github上使用双因素身份验证。据我所知,我正在使用Windows 10和Eclipse Neon完全修补并更新。)

4 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。这篇文章的解决方法非常有用: https://www.eclipse.org/forums/index.php/t/1081631/

帮助 - > 安装新软件

使用: http://download.eclipse.org/mpc/releases/1.5.1a

选择" EPP Marketplace客户端"

继续使用默认值

答案 1 :(得分:2)

我也有同样的问题。问题出在java.net.Authenticator模块中的最新Neon Eclipse。

According to Christian Halstrick

  

问题是在推送期间,两个请求被发送到服务器,首先是GET,然后是POST(包含包数据)。匿名发送的第一个GET请求被401(未授权)拒绝。安装Authenticator时,java.net类将使用Authenticator向用户请求凭据并重试该请求。但这种情况发生在幕后,JGit级代码并没有发现这种情况发生。

     

下一个请求是POST,但由于JGit认为第一个GET请求是匿名的,因此它不会向POST请求添加身份验证标头。这个POST当然也失败了,但由于这个请求包含了很多来自JGit的流体数据(包文件!),java.net类不​​能简单地用授权头重试请求。整个过程都失败了。

     

如果没有安装Authenticator,情况会更好。第一个匿名GET请求失败了401,这冒泡到JGit。然后,JGit会询问用户凭据(在已安装的CredentialsProviders的帮助下)并使用基本身份验证标头重试。这成功,当发送POST请求时,JGit知道成功的授权并将正确的头直接添加到POST。请求成功。

请注意,EGit使用JGit作为Git实现。

解决方案是更改Eclipse的版本。

我使用Spring tool Suite,它对我来说很好。 Spring工具套件是基于Eclipse的一体化分发ide。

答案 2 :(得分:2)

我刚刚在Help / Check for Updates下进行了一次简单的Eclipse更新,问题就消失了。

答案 3 :(得分:0)

我遇到了双重身份验证问题,pull和commit正常工作,push无法正常工作,并给出了身份验证失败。

我在github上的帐户上禁用了两步身份验证,此后工作正常。