如何解决“git pull,fatal: unable to access 'https://github.com...\': Empty reply from server”问题。

92

当我使用Git命令"git pull"更新我的仓库时,出现以下错误信息: fatal: unable to access '...': Empty reply from server.

之后我尝试使用GitHub应用程序,但是弹出了以下提示:

Cloning into 'renren_mobile'...
warning: templates not found /Applications/GitHub.app/Contents/Resources/git/templates
2014-11-23 13:58:57.975 GitHub for Mac Login[659:11891] AskPass with arguments: (
    "/Applications/GitHub.app/Contents/MacOS/GitHub for Mac Login",
    "Username for 'https://github.com': "
)
2014-11-23 13:58:58.032 GitHub for Mac Login[660:11915] AskPass with arguments: (
    "/Applications/GitHub.app/Contents/MacOS/GitHub for Mac Login",
    "Password for '': "
)
fatal: unable to access '...': Empty reply from server
 (128)

1
这可能是登录或服务问题。最好在http://superuser.stackexchange.com上询问。 - Gábor Bakos
21个回答

67

在我遇到这个问题之前,我一直卡在这里,直到我注意到我没有登录我的 VPN。

  1. 如果你已经为 VPN 配置了代理,你需要登录 VPN 才能使用代理。

  2. 要在 VPN 外部使用它,请使用 unset 命令:

git config --global --unset http.proxy

记得在VPN内部时设置代理


2
谢谢您提到VPN!那就是我的问题所在。我禁用了我的VPN(Private Internet Access),然后一切正常了。 - Mike Miller
我的代理服务器没有运行,但是我在我的shell中设置了环境变量https_proxyhttp_proxy。一旦我删除了这些环境变量,事情就正常工作了。 - Saim Raza

44

在Windows系统中:

进入Win -> 控制面板(Control Panel) -> 凭据管理器(Credential Manager) -> Windows凭据(Windows Credentials)

搜索 GitHub 地址并删除。

输入图像描述

然后尝试执行:

git push -u origin master

Windows会再次要求你输入git凭据,输入正确的凭据即可完成。


1
不起作用。至少对于git clone来说是这样的。(因为push对于尚未克隆的存储库不起作用[而且只读]) - Martini Bianco
这个对我也没用,虽然它弹出了GitHub登录对话框,但是它以403的错误码拒绝了我。 - Matthew Lock
检查您是否有克隆存储库的权限,检查是否需要安装任何证书。可能需要进行一些配置-->请查看此链接:https://dev59.com/VWox5IYBdhLWcg3wpFz5 - Marco
1
这个解决方案对我很有用,因为它卡在了使用另一个GitHub账户上。一旦我被提示重新登录,我就能够执行“git push -u origin master”而不会出现访问或未找到错误。点赞。 - Yogi
如果我使用这种方法,我需要为每个 GitHub 组织重复这个过程吗? - Lauro235

43

6
我在这里添加评论是因为它在谷歌中首先出现了,我想在这里扩展一下答案。我遇到了错误:“Push failed: Failed with error: fatal: unable to access 'https://github.com/username/repo.git/': Empty reply from server.” 对于我和这个答案来说,Github的这篇文章对我们有所帮助:https://help.github.com/articles/changing-a-remote-s-url/#switching-remote-urls-from-https-to-ssh。我使用的是OSX Yosemite操作系统。 - user115014
是的,我也遇到了同样的错误。将协议从 http 更改为 git 解决了问题,我成功上传了我的代码库。 - Stefan Rein

19

我尝试了这里列出的一些技巧,但都没有成功。看起来我的终端仿真器(iTerm2)或会话正在缓存某些东西。当我从一个新的终端选项卡中运行命令时,问题消失了。


PhpStorm终端会出问题,但iTerm2不会。谢谢,解决方案很奇怪但非常有帮助! - Patryk
当你使用Git时,重新启动一些东西似乎是解决许多问题的好方法! - AymDev
1
我在Windows 10上使用git bash时遇到了同样的问题,打开一个新的git bash窗口解决了它。谢谢! - Blueriver

12
尝试一下这个命令:
git config --global --unset http.proxy
git config --global --unset https.proxy

2
unset https.proxy 对我来说可以工作。谢谢。 - Dedi Ananto

6
如果使用 unset 进行取消设置
git config --global --unset-all https.proxy

如果你发现某个功能无法正常使用,

那么请检查环境变量http_proxyhttps_proxy是否已设置。可以使用以下命令进行检查:

env | grep -i proxy

如果该变量已设置为某些值,则可以使用以下方式取消设置:-
   https_proxy=""

4
错误可能是,计算机保存了git用户名和密码,因此如果您切换到另一个帐户,则会出现错误403。以下是解决方案。 在Windows中 您可以在这里找到密钥:
控制面板>用户帐户>凭据管理器>Windows凭据>通用凭据
接下来,删除Github密钥。 在Mac中 在Finder中搜索Keychain Access应用程序>在Keychain Access中搜索github.com>找到github.com的“internet password”条目>相应地编辑或删除该条目。

3

我通过将远程源的https部分替换为http来解决了这个问题。这也是一个解决方法。我认为它可能会在未来帮助到某些人。


2
您可以逐步尝试以下解决方案,其中之一应该适用于您。
我已经尝试了所有三个步骤,但是第4步对我有用。因为我使用了两个不同的git帐户。 步骤1: 步骤2:
  • 检查您当前的分支git branch,如果您不在分支git checkout branch_name上。

  • 要创建新分支,请使用git checkout -b“new branch name”,要切换到新分支,请使用上述命令

步骤3:
  • 如果你正在从一个旧的仓库作为模板创建新的仓库(如果不是这种情况,请勿执行此操作),则需要完全删除旧仓库的git文件,以便开始新的仓库:

    rm -rf .git 然后重复步骤1

步骤4

  • 在Windows上,您可以尝试通过以下方式输入写入凭据或从控制面板中删除git凭据,然后重复步骤1

    转到Win->控制面板->凭据管理器->Windows凭据

enter image description here


2
我曾遇到与Jenkins安装相关的相同问题。无论如何尝试克隆,响应都是:“stderr:fatal: unable to access 'https://my.gitlab.server/group/repo.git/': Empty reply from server”。不幸的是,转换为http不是一个选项,因此我需要找出根本原因。事实证明,Jenkins用户的全局配置中有一个http设置(可能是我们在gitlab实例上运行自签名证书时添加的)。查看全局配置后发现:
$ git config --global -l
http.sslverify=false

去掉这个就行了。
$ git config --global --unset http.sslverify

(这似乎是一个打印错误,正确的密钥应该是http.sslVerify

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接