【问题标题】:'cannot open git-upload-pack' error in Eclipse when cloning or pushing git repository克隆或推送 git 存储库时 Eclipse 中的“无法打开 git-upload-pack”错误
【发布时间】:2013-09-19 18:23:48
【问题描述】:

我无法在 Eclipse 中的 Bitbucket 上克隆或推送到 git 存储库:

这很奇怪,因为前一天我没有任何问题。我已经下载了 3 次 sts 没有运气。这个错误一直显示。我还安装了 SourceTree,它说“这不是有效的源路径 / URL”:

如果我使用 git 命令导入项目,它可以工作,但我不想使用 EGit 来完成这项任务,因为我是 git 的新手。

我不知道这是否与它有关,但在同一个目录中我有 android-adt-bundle。这个效果很好,但该项目位于 GitHub 上,而不是 Bitbucket。此外,我正在与另一个人一起工作,他能够从 Bitbucket 存储库中获取和推送数据。我已经阅读了很多帖子,但没有一个对我有帮助。

顺便说一句,我使用的是 Windows 7。

【问题讨论】:

  • 你能用 git Bash 试试 git clone。这将提供更详细的输出。
  • 我可以使用 git 进行导入。它工作正常,问题是 egit。一定有任何文件或某处丢失或损坏。
  • 我们真的需要保护这个问题!
  • 今天在 Eclipse 中遇到了同样的问题。我刚刚重新启动了 Eclipse 并再次尝试。

标签: eclipse git bitbucket egit atlassian-sourcetree


【解决方案1】:

感谢steps outlined in the Eclipse forum

设置 SSH 密钥的东西

  1. 根据http://help.github.com/win-git-installation/的github说明下载并安装mysys git
  2. 在 C:/Users/you/ssh 中隐藏子目录中的所有现有密钥(id_rsa 和 id_rsa.pub)。如果 ssh 目录不存在,则创建它。当然,“你”是操作系统知道你的用户名。
  3. 从开始菜单,运行 Git-Bash 命令外壳(常规的 DOS 命令外壳不起作用)。
  4. 在 Git-Bash shell 中,根据您的电子邮件(您在 github 上注册的那个)生成一个 rsa 密钥: ssh-keygen -t rsa -C "you@wherever.com" 并输入您的密码并在询问时确认。
  5. 上一步应该已经创建了 C:/User/you/ssh/id_rsa.pub,您现在可以在文本编辑器中打开并复制它。在 github,转到帐户设置、SSH 密钥,添加一个密钥并将其粘贴到密钥框中。
  6. 再次在 Git-Bash 中(注意下一行的反引号): eval `ssh-agent` ssh-add C:/User/you/ssh/id_rsa ssh git@github.com

这是您刚刚所做的:您运行了 ssh-add 所需的 ssh-agent。然后您使用 ssh-add 记下您的密钥的位置。然后你尝试 ssh 到 GitHub。对最后一条命令的响应应该是您已在 GitHub 上成功进行身份验证,但您没有 shell 访问权限。这只是一个身份验证测试。如果身份验证不成功,则必须对其进行排序。试试详细版本:

ssh -v git@github.com

假设这有效....

在Eclipse中,配置远程推送

  1. Window > Show View > Git > Git Repositories 将添加一个存储库浏览器窗口。
  2. 在存储库窗口中,选择存储库并展开并右键单击Remotes,然后选择Create Remote
  3. 从 GitHub 存储库页面复制 GitHub 存储库 URI 并将其粘贴到 URI 框中。
  4. 选择 ssh 作为协议,然后返回 URI 框并在开头添加“git+”,如下所示:

    git+ssh://git@github.com/UserName/ProjectName.git

  5. Repository Path 框中,删除前导斜杠

  6. 点击下一步并交叉手指。如果您得到“auth fail”,请重新启动 Eclipse 并再次尝试第 5 步。
  7. 通过身份验证后,在下一个对话框中选择“master”作为源引用,单击“添加所有分支规范”和“完成”。

我没有使用 SSH git@github.com,而是使用 SSH git@bitbucket.org。

现在我可以毫无问题地推送和导入了。

【讨论】:

  • 这对我不起作用。我在 Windows 7 上使用 Eclipse + GitHub 并不断收到 git-upload-pack 错误。
  • 似乎没有什么对我有用,因为项目限制我必须使用 windows 10 + java 7+ jboss 7.1.1(基于 eclipse keepler 构建)+ git。我几乎尝试了所有方法,但在拉/推或克隆期间不断收到错误 git upload pack 。有人可以帮忙吗???
  • 这是在敲了我大约 6 个小时后对我有用的解决方案。谢谢。
【解决方案2】:

其中一个原因是 Fiddler2 配置为解密 HTTPS 流量。关闭 Fiddler2,它应该可以正常工作。

【讨论】:

  • 或者,您可以将 Fiddler 的根证书添加到 Java cacerts 文件中。
【解决方案3】:

我在 Eclipse 中遇到了同样的错误,“无法打开 git-upload-pack”,BitBucket 存储库试图进行拉取或推送。 我通过将本地分支(团队/切换到)切换到主分支并进行拉取来解决它,然后切换回我正在处理的分支并再次拉取。

【讨论】:

    【解决方案4】:

    我在 Ubuntu 12.04LTS 上使用 Eclipse Kepler SR2,并尝试使用 HTTPS 访问内部 GitHub。 不幸的是,我启动 Eclipse 的底层 JVM 遇到了服务器自签名证书的问题。为 Eclipse 切换到不同的 JVM 后,到我们的 GitHub 的 HTTPS 连接正常工作。

    创建一个使用不同 JDK 的简单 Eclipse 启动器,例如使用 OpenJDK: /Eclipse_Kepler_4.4.2/eclipse -vm /usr/lib/jvm/java-6-openjdk-i386/jre/bin

    【讨论】:

      【解决方案5】:

      当您的本地防火墙阻止您的应用程序将任何网络流量发送到您的计算机之外时,可能会导致此问题。 IE。出站流量或出口流量规则。

      请尝试禁用防火墙以进行快速测试,看看这是否能解决您的问题。如果是,则为您尝试用于推送或拉取 git 存储库的应用程序设置适当的防火墙策略。

      【讨论】:

        【解决方案6】:

        它的发生是由于以下原因:

        1) 防火墙。

        2) 网络问题。

        3) 代理设置不匹配

        4) 通过不同的路由器连接 - 在网络内未授权。

        5) Git 代理验证详情

        【讨论】:

        • 在我的情况下,这是我的防火墙阻止。
        • 在我的情况下,我的 Git 代理身份验证详细信息不正确
        • 就我而言,坐在防火墙后面并更改了我的代理密码,在 Preferences>>General>>NetworkConnections 下更新了密码
        • 关于 2),“网络问题”的一个实例只是互联网连接不工作。再一次,与 git 相关的错误消息根本无法解释问题所在。
        • 就我而言,我没有连接到“开发网络”。检查您的 wifi 连接到正确的网络。
        【解决方案7】:

        也可能是 SSL 证书不好,修复服务器

        如果您的 GIT 服务器带有过期或自签名 SSL 证书,请修复服务器,然后一切都应该运行正常。

        不安全的修补程序:让客户端接受任何证书

        以下解决方案只是客户端的修补程序,应该避免因为它会危及您的凭据和内容的安全性。在“How can I make git accept a self signed certificate?”中有对此的详细解释,它提供了更复杂和更安全的解决方案,如果以下一般可行,您可以尝试。

        在我的例子中,Eclipse 使用与命令行不同的 git config 存储,因此没有选项

        git config http.sslVerify false
        

        set(我使用命令行为 repo for working with invalid/untrusted SSL cert 设置)。

        在 Eclipse 中添加该选项可立即解决该问题。添加选项

        1. 通过应用程序菜单Window => Preferences(或在OSX Eclipse => Settings上)打开首选项。
        2. 导航到 团队 => Git => 配置
        3. 点击Add entry...,然后将http.sslVerify放入密钥框,将false放入数值框。

        似乎是适用于不同操作系统上的 Eclipse 4.4 (Luna)、4.5.x (Mars) 和 4.6.x (Neon) 的有效解决方案。

        【讨论】:

        • 这对我帮助很大——也是最简单的解决方案。仅供参考,在 git 配置屏幕上,单击 Add entry...,然后将 http.sslVerify 放入 key 框中,将 false 放入 value 框中。
        • 在 MAC OS X Yosemite 上仍然适用于 Mars.1 Release (4.5.1) 的有效解决方案
        • 在 Ubuntu 14.04 LTS 上仍然适用于 Mars.2 Release (4.5.2) 的有效解决方案
        • 在 Windows 10 上仍然适用于 Neon.1 的有效解决方案
        • 但请注意:在这样的首选项中完成后,您可以为整个用户帐户全局设置配置...因此不再进行 SSL 验证。这可能会导致安全问题!
        【解决方案8】:

        我遇到了类似的问题,对您的问题的快速解决方法是确保您在 eclipse.ini 文件中设置 JVM 选项以使用 jre7。较旧的 Jre 带有旧的本地策略文件,这将返回错误。一个快速说明是,您需要指向您的 javaw 而不是 java。

        -vm c:\PROGRA~2\Java\jre745\bin\javaw.exe -vmargs -Xms40m -Xmx512m -XX:MaxPermSize=256m -Dsun.lang.ClassLoader.allowArraySyntax=true

        【讨论】:

          【解决方案9】:

          我遇到了类似的问题。我只是按照以下步骤 1.团队>远程>配置从上游获取... 2. 提供 https:bit bucket uri 然后 Save and Fetch。 3. 重置项目中的最新提交。团队 > 重置 > 从远程文件夹中选择最新提交 4.然后同步工作区。团队 > 同步(在同步视角中) 5.右键单击项目并覆盖本地副本。 6. 点击拉取图标。

          【讨论】:

            【解决方案10】:

            我在 Eclipse 中设置了代理设置,但没有通过 ssh 连接,这导致了错误。

            【讨论】:

              【解决方案11】:

              我已经尝试了所有这些方法,但没有成功,然后一个同事告诉我,Putty Key Generator 以前生成 1024 位的密钥,但现在 Putty 默认生成 2048 位的密钥,所以你只需要更改“生成的密钥中的位数”,它应该可以工作。

              【讨论】:

                【解决方案12】:

                这个问题也可能是由错误的系统时间(几年)引起的,导致 Git 的证书无效。

                【讨论】:

                  【解决方案13】:

                  就我而言,事实证明“首选项->网络连接”中的全局​​代理设置干扰了 git。这有点令人困惑,因为 git 具有用于代理配置的专用属性。无论如何,我已经将存储库主机添加到“代理绕过”列表中,问题就消失了。

                  【讨论】:

                    【解决方案14】:

                    我刚刚将网络设置从Native更改为Manual,重启后错误消失了。

                    我正在使用 RAD 8.0.4.3,旧版本的 EGit 连接到 TFS/Git。 ;-)

                    【讨论】:

                      【解决方案15】:

                      Eclipse Mars 4.5.2 中的解决方案: 窗口 -> 首选项 -> 团队 -> Git -> 存储库设置 -> AddEntry 密钥:http.sslVerify 值:假

                      【讨论】:

                        【解决方案16】:

                        挣扎了几个小时后,我发现在我的Eclipse中添加条目sslVerify = false时,git配置文件没有更新。

                        我通过导航到我的.git 目录并将config 文件更新为:

                        解决了我的问题
                        [http]
                            sslVerify = false
                        

                        【讨论】:

                        • 为我工作。下一步是eclipse需要用户名和密码。
                        【解决方案17】:

                        我收到此错误消息是因为我的用户与我的 git 配置中的 repo 预期的用户不同。

                        这显然会触发上面提到的 SSL 证书失败。

                        修复到正确的用户为我解决了这个问题。

                        【讨论】:

                          【解决方案18】:

                          要修复 SSL 问题,您也可以尝试这样做。

                          从 bitbucket 服务器下载 NetworkSolutionsDVServerCA2.crt 并将其添加到 ca-bundle.crt

                          ca-bundle.crt 需要从 git install 目录下复制并复制到你的主目录

                          cp -r git/mingw64/ssl/certs/ca-bundle.crt ~/

                          然后执行此操作。这对我有用 cat NetworkSolutionsDVServerCA2.crt >> ca-bundle.crt

                          git config --global http.sslCAInfo ~/ca-bundle.crt

                          git config --global http.sslverify true

                          【讨论】:

                            【解决方案19】:

                            对于那些仍然有这个问题的人,以上解决方案都不适合你:
                            更新您的 java 和 Eclipse 版本。
                            就我而言,我从 java 7 更新到 java 9,将 Eclipse Mars 更新到 Eclipse Oxygen,这个问题就解决了!!!

                            【讨论】:

                              【解决方案20】:

                              我将-Dhttps.protocols=TLSv1.1,TLSv1.2 添加到eclipse.ini 并且它正在工作。 我使用 java 1.7

                              【讨论】:

                              • 注意:您必须重新启动 Ecplise 才能像@Hardik Lotiya 提到的那样生效
                              【解决方案21】:

                              最近我在现有存储库中遇到了同样的问题。当我尝试从上游获取无法获取的对象并遇到问题时 eclipse:无法打开 git-upload-pack。

                              对我来说,在 eclipse.ini 文件中添加 TLS 版本后解决方案工作

                              Dhttps.protocols=TLSv1.1,TLSv1.2

                              java7需要添加TLSv1.1,java8需要添加TLSv1.2

                              注意:以上配置添加后需要重启eclipse。

                              【讨论】:

                                【解决方案22】:

                                我终于通过在network configuration 上禁用IPv6 解决了这个问题

                                Screenshot of my network configuration

                                请注意,我使用的是 VPN 连接。如果您也这样做,则必须重新启动它。 我很确定即使您不使用 VPN,它也能正常工作。

                                【讨论】:

                                  【解决方案23】:

                                  将 https.sslVerify 添加为 false...当您使用 https 连接从 git 导入时

                                  【讨论】:

                                    【解决方案24】:

                                    仓库所有者应该给你一个贡献者权限:

                                    【讨论】:

                                      【解决方案25】:

                                      对于在 IBM JDK 上运行的 Eclipse,以下 2 行在 eclipse.ini 中 -vmargs 之后是必需的:

                                      -Dhttps.protocols=TLSv1.1,TLSv1.2
                                      -Dcom.ibm.jsse2.overrideDefaultTLS=true

                                      【讨论】:

                                        【解决方案26】:

                                        我在 Spring Tool Suite (STS) 上遇到了同样的问题,结果我所要做的就是在 STS 网络配置中更新我的代理设置。

                                        窗口 > 首选项 > 常规 > 网络连接,然后在下拉菜单中从“Native”中选择“Manual”。

                                        在这里,只需单击编辑添加您的代理 url、端口和您的 httphttps 凭据。 应用并关闭。

                                        希望它对你有用。

                                        【讨论】:

                                          【解决方案27】:

                                          我在 eclipse 2020-12 中遇到了完全相同的问题。在 Preferences->Git 中,我将“Http Client”更改为“Java built-in HTTP”,问题已解决。

                                          【讨论】:

                                          • 在 eclipse 2021-03 上为我工作
                                          • 这对我来说适用于 STS 4 (Eclipse 4.9.0.RELEASE)
                                          【解决方案28】:

                                          我收到了这个错误,经过一些研究发现我们需要在 github 中创建一个访问令牌并使用它来代替我们一直使用的密码而 git 推拉。

                                          Github 开发者博客解释密码弃用:https://developer.github.com/changes/2020-02-14-deprecating-password-auth/

                                          我已在此处记录了这些步骤 - 您可以尝试一下,看看它是否适合您。 https://webfuse.in/blogs/issues-troubleshooting/git-upload-pack-not-permitted-on-error-while-git-pull-and-git-push/

                                          谢谢。这看起来像一个常青的问题,因为我在 7 年后与其他有效答案一起回答! :)

                                          【讨论】:

                                            【解决方案29】:

                                            在获取 Bitbucket 存储库时,我在 STS4 中遇到了“不允许 git-upload-pack”错误。我挣扎了 很多小时 才意识到我们需要使用在 Bitbucket 中使用“创建应用程序密码”生成的密码(而不是我们自己设置的密码)

                                            生成密码的网址:https://bitbucket.org/account/settings/app-passwords/new

                                            在 STS4 的“克隆 Git 存储库”中使用此密码

                                            【讨论】:

                                              【解决方案30】:

                                              我有同样的错误。工作时突然发生错误。就我而言,这看起来像是帐户问题或服务器端问题。

                                              我从网络浏览器注销并再次登录 Bitbucket 存储库,这解决了我的问题。

                                              【讨论】:

                                                猜你喜欢
                                                • 2018-08-08
                                                • 1970-01-01
                                                • 2010-09-18
                                                • 2012-03-30
                                                • 2011-10-27
                                                • 1970-01-01
                                                • 2018-09-16
                                                • 1970-01-01
                                                相关资源
                                                最近更新 更多