67

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

错误“无法打开 git-upload-pack”

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

源树中的错误“这不是有效的源路径/ URL”

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

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

我正在使用 Windows 7 顺便说一句。

4

30 回答 30

124

也可能是错误的 SSL 证书,修复服务器

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

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

以下解决方案仅是客户端的修补程序,应避免使用,因为它会危及您的凭据和内容的安全性。在“我如何让 git 接受自签名证书? ”中有对此的详细解释,它提供了更复杂和更安全的解决方案,如果以下内容一般有效,您可以尝试一下。

在我的情况下,Eclipse 使用与命令行不同的 git config 存储,因此没有选项

git config http.sslVerify false

set (我使用命令行为 repo 设置了使用无效/不受信任的 SSL 证书)。

在 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) 的有效解决方案。

于 2014-09-18T16:28:15.663 回答
17

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

1) 防火墙。

2) 网络问题。

3) 代理设置不匹配

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

5) Git 代理认证详情

于 2014-07-02T14:31:18.477 回答
12

最后,由于Eclipse 论坛中概述的步骤,我使它工作:

设置 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. 存储库路径框中,删除前导斜杠

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

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

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

于 2013-09-15T18:21:45.093 回答
9

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

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

[http]
    sslVerify = false
于 2017-02-24T07:24:17.367 回答
7

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

于 2018-03-06T10:01:14.633 回答
6

造成这种情况的原因之一是 Fiddler2 配置为解密 HTTPS 流量。关闭 Fiddler2,它应该可以正常工作。

于 2014-02-04T21:13:00.560 回答
5

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

于 2021-04-03T16:17:05.403 回答
4

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

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

于 2014-05-17T07:07:13.363 回答
4

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

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

Dhttps.protocols=TLSv1.1,TLSv1.2

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

注意:添加上述配置后,需要重新启动 eclipse。

于 2018-12-05T13:52:17.620 回答
3

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

于 2015-10-07T08:30:19.350 回答
2

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

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

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

于 2021-12-14T17:39:55.687 回答
1

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

于 2014-03-09T09:02:17.770 回答
1

我在 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

于 2014-04-04T06:24:36.467 回答
1

我遇到了类似的问题。我只是按照以下步骤操作 1. 团队 > 远程 > 配置从上游获取... 2. 提供 https: bit bucket uri 然后保存并获取。3. 重置项目中的最新提交。Team > Reset > Select the latest commit from remote folder 4. 然后同步工作区。团队 > 同步(在同步透视图中) 5. 右键单击​​项目并覆盖本地副本。6. 点击拉图标。

于 2015-05-05T15:00:26.287 回答
1

Eclipse Mars 4.5.2 中的解决方案:Window -> Preferences -> Team -> Git -> Repository Settings -> AddEntry Key: http.sslVerify Value: false

于 2016-04-07T05:56:58.670 回答
1

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

于 2018-03-02T20:44:35.580 回答
1

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

于 2019-03-27T16:25:21.723 回答
0

我遇到了类似的问题,快速解决您的问题是确保您在 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

于 2014-10-20T19:17:55.470 回答
0

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

于 2015-05-29T12:33:39.577 回答
0

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

于 2015-06-24T13:54:20.540 回答
0

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

于 2015-07-02T16:05:00.433 回答
0

我刚刚将网络设置从 更改NativeManual,重新启动并且错误消失了。

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

Eclipse 网络设置

于 2016-02-17T03:31:52.053 回答
0

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

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

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

于 2017-07-18T15:11:28.503 回答
0

要解决 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

于 2017-11-09T15:22:44.133 回答
0

IPv6我终于通过禁用network configuration

我的网络配置截图

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

于 2019-03-07T10:57:15.343 回答
0

存储库所有者应该给你一个贡献者权限: 例子

于 2019-12-04T21:32:08.333 回答
0

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

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

于 2020-02-20T00:38:57.477 回答
0

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

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

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

希望对你有效。

于 2020-04-13T08:52:40.643 回答
0

我收到了这个错误,经过一些研究发现我们需要在 github 中创建一个访问令牌并使用它而不是我们在 git push 和 pull 时一直使用的密码。

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 年后与其他有效答案一起回答!:)

于 2021-08-15T17:02:37.700 回答
0

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

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

于 2021-12-15T13:35:54.757 回答