如何解决“git pull,fatal:无法访问'https://github.com ...\':来自服务器的空回复”

Posted

技术标签:

【中文标题】如何解决“git pull,fatal:无法访问\'https://github.com ...\\\':来自服务器的空回复”【英文标题】:How to resolve "git pull,fatal: unable to access 'https://github.com...\': Empty reply from server"如何解决“git pull,fatal:无法访问'https://github.com ...\':来自服务器的空回复” 【发布时间】:2015-01-21 03:22:51 【问题描述】:

我使用git命令“git pull”更新我的存储库失败,消息如下: 致命:无法访问“...”:来自服务器的空回复。

我尝试使用 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)

【问题讨论】:

这可能是登录或服务问题。最好在superuser.stackexchange.com 询问 【参考方案1】:

我解决了这个问题。我认为这可能是因为 https 而发生的,但我不太确定。 您可以将远程 URL 从 HTTPS 切换到 SSH。

1.详情请参考此链接:https://help.github.com/articles/changing-a-remote-s-url/

我还必须配置 ssh 密钥。

2.关注这个:https://help.github.com/articles/generating-ssh-keys/

遇到这个问题是因为我更换了我的mac,但是我做的数据传输,我想可能是因为关键原因。

【讨论】:

我正在添加对此的评论,因为它首先出现在谷歌中,我想在这里扩展答案。我收到错误:推送失败:失败并出现错误:致命:无法访问'github.com/username/repo.git':来自服务器的空回复。对我和这个答案来说,这篇来自 github 的文章有帮助:help.github.com/articles/changing-a-remote-s-url/…。我在 OSX Yosemite 上 是的,同样的错误。将协议从 http 更改为 git 解决了这个问题,我可以上传我的存储库。【参考方案2】:

在我注意到我没有登录到我的 *** 之前,我一直陷入这个问题。

    如果您已为 *** 配置代理,则需要登录您的 *** 才能使用代理。

    要在 *** 之外使用它,请使用 unset 命令:

    git config --global --unset http.proxy
    

记得在 *** 中设置代理。

【讨论】:

感谢您提及 ***!那是我的问题。我禁用了我的 ***(私人互联网访问),一切正常。【参考方案3】:

在 Windows 上:

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

搜索github地址并删除。

然后尝试执行:

git push -u origin master

Windows 会再次询问您的 git 凭据,输入正确的凭据即可。

【讨论】:

不起作用。至少不适用于 git clone。 (因为推送不适用于尚未克隆的存储库[并且无论如何都是只读的]) 这对我也不起作用,虽然它再次弹出 GitHub 登录对话框,但它拒绝了我 403 检查您是否有权限克隆存储库,检查您是否需要安装任何证书。您可能需要做一些配置 --> 看看这个:***.com/questions/9072376/… 这个解决方案对我有用,因为它被困在使用不同的 GitHub 帐户。一旦我被提示再次登录,我就能够执行“git push -u origin master”而无需访问或未找到错误。赞成票。【参考方案4】:

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

【讨论】:

phpStorm 终端会有问题,iTerm2 不会。谢谢,解决方案很奇怪,但很有帮助! ? 当你使用 git 时,重启东西似乎是解决许多问题的好方法! 我在 Windows 10 上使用 git bash 时遇到了同样的问题,打开一个新的 git bash 窗口解决了它。谢谢!【参考方案5】:

试试这个

git config --global --unset http.proxy

git config --global --unset https.proxy

【讨论】:

取消设置 https.proxy 对我有用。谢谢【参考方案6】:

如果取消设置使用

git config --global --unset-all https.proxy

不适合你。

然后检查是否设置了环境变量http_proxyhttps_proxy。使用此命令检查:-

env | grep -i proxy

如果这个变量被设置为某事,那么你可以使用取消设置:-

   https_proxy=""

【讨论】:

【参考方案7】:

我通过用 http 替换远程源的 https 部分解决了这样的问题。这也是一种解决方法。我认为它可能会在将来对某人有所帮助。

【讨论】:

【参考方案8】:

然而,我在安装 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

【讨论】:

【参考方案9】:

我在这里尝试了大部分答案,但未能解决问题(在 Windows 10 上)。

解决问题的方法只是将版本从git version 2.8.1.windows.1升级到最新版本git version 2.10.1.windows.1

【讨论】:

【参考方案10】:

我认为上面提到的从 Windows 凭据管理器中删除 git 凭据的解决方案有效。基本上它会在缓存中使用其他 git 凭据。清除旧凭据将为覆盖新凭据铺平道路。

【讨论】:

在 Windows 10 上为我工作。我在那里删除了一些条目。然后重新添加。【参考方案11】:

错误可能是,计算机已经保存了一个 git 用户名和密码,所以如果您切换到另一个帐户,则会出现错误 403。下面是解决办法

在 Windows 中

你可以在这里找到钥匙:

控制面板 > 用户帐户 > 凭据管理器 > Windows 凭据 > 通用凭据

接下来,移除 Github 密钥。

在 Mac 中

在 Finder 中,搜索 Keychain Access 应用 > 在 Keychain Access 中,搜索 github.com > 找到 github.com 的“互联网密码”条目 > 相应地编辑或删除该条目。

【讨论】:

【参考方案12】:

我在将文件推送到我的私有 bitbucket 存储库时收到了同样的错误。由于一些奇怪的原因,无法发送请求,结果是空回复!我再次尝试使用代理隧道(您可以使用任何其他 *** 应用程序),到现在已经解决了。

【讨论】:

什么是“代理隧道”?你是怎么配置的?你能edit你的回答说清楚吗? 我刚刚使用了一个免费的 *** 应用程序来访问私有网络并通过公共网络远程发送我的请求。 回顾一下,您的问题是您无法访问 BitBucket(或只有一个端口),因为它被您的 ISP/国家/地区出于某种原因阻止了,而您已经使用 *** 解决了​​这个问题限制。请记住,即使连接通常是加密的,代理通常也可以查看流量​​。仅当您信任代理提供商时才执行此操作。 *** 是不同的,它提供了一个适当的隧道,所以你不需要太多的信任。【参考方案13】:

对于使用自己编译的 git 的类 Ubuntu 发行版:您可能缺少 libcurl4-openssl-devapt install libcurl4-openssl-dev 然后重新配置,然后进行安装

【讨论】:

【参考方案14】:

您可以逐步尝试以下解决方案,其中一个应该适合您。

我已经尝试了所有三个步骤,但 STEP 4 对我有用。因为我使用了两个不同的 git 账户

第 1 步:

git 初始化 git add README.md git commit -m "第一次提交" git远程添加源https://github.com/XXXX/YYYY.git git push -u origin master

第 2 步

如果您不在分支 git checkout branch_name 上,请检查您当前的分支 git branch

要创建新分支,请使用git checkout -b "new branch name" 使用上面的命令打开新分支

第 3 步

在特殊情况下,您要从用作模板的旧存储库开始创建新存储库(如果不是这种情况,请不要这样做)。完全清除旧存储库的 git 文件,以便您可以启动一个新存储库:

rm -rf .git 并重复 步骤 1

第 4 步

在windows上,您可以尝试通过以下方式将写入凭据或从控制面板中删除git凭据并重复STEP 1

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

【讨论】:

【参考方案15】:

我们有一个内部托管的 git 服务器 (TFS),并且我设置了代理环境变量(HTTP_PROXY 和 HTTPS_PROXY)。正常工作一段时间后,我突然开始收到此错误。

我最终通过在 NO_PROXY 环境变量中设置我们的服务器来修复它。

【讨论】:

【参考方案16】:

我猜你的 git 远程 url 已经设置为 SSH。您可以将其设置为 HTTPS:

git remote set-url origin https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git

重试此命令,提示输入用户名和密码:

git pull

【讨论】:

【参考方案17】:

我也面临同样的问题但我的问题是由于我的钥匙串中存储的凭据错误。所以我通过从我的钥匙串中删除我的旧凭据来解决。

【讨论】:

【参考方案18】:

我解决了,将 'http..' git url 替换为 'ssh..' 简单打开 .git/config 文件并将其复制到那里

【讨论】:

以上是关于如何解决“git pull,fatal:无法访问'https://github.com ...\':来自服务器的空回复”的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Ajax 跨域请求不到的问题

如何解决包冲突问题

如何解决包冲突问题

如何解决ajax跨域问题

MySQL 的 10048问题,如何解决?

如何解决smartgit的冲突问题