克隆或推送git存储库时,“无法在Eclipse中打开git-upload-pack”错误

时间:2013-09-15 15:03:16

标签: eclipse git bitbucket egit atlassian-sourcetree

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

Error 'cannot open git-upload-pack'

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

Error 'This is not a valid source path / URL' in sourcetree

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

我不知道这是否与它有关,但在同一目录中我有android-adt-bundle。这个工作得很好,但项目在于GitHub,而不是Bitbucket。此外,我正在与另一个人合作,他能够从Bitbucket存储库获取数据并将数据推送到Bitbucket存储库。我看了很多帖子,但没有一个人帮助过我。

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

30 个答案:

答案 0 :(得分:111)

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

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

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

以下解决方案仅仅是客户端上的一个修补程序,应该避免因为它会破坏您的凭据和内容的安全性。 “How can I make git accept a self signed certificate?”中对此进行了详细说明,如果以下情况有效,您可以尝试使用更复杂,更安全的解决方案。

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

git config http.sslVerify false

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

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

  1. 通过应用程序菜单打开首选项 Window =>首选项(或在OSX Eclipse =>设置)。
  2. 导航至团队=> Git =>配置
  3. 点击Add entry...,然后将http.sslVerify放入密钥框,并在值框中添加false
  4. 似乎是不同操作系统上Eclipse 4.4(Luna),4.5.x(Mars)和4.6.x(Neon)的有效解决方案。

答案 1 :(得分:12)

由于以下原因而发生:

1)防火墙。

2)网络问题。

3)代理设置不匹配

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

5)Git代理验证详细信息

答案 2 :(得分:7)

最后,我感谢steps outlined in the Eclipse forum

设置SSH密钥

  1. 根据http://help.github.com/win-git-installation/
  2. 上的github说明下载并安装mysys git
  3. 在C:/ Users / you / ssh中隐藏子目录中的所有现有密钥(id_rsa和id_rsa.pub)。如果ssh目录不存在,请创建它。当然,“你”是操作系统知道你的用户名。
  4. 从开始菜单中,运行Git-Bash命令shell(常规DOS命令shell不起作用)。
  5. 在Git-Bash shell中根据您的电子邮件(您在github上注册的电子邮件)生成一个rsa密钥: ssh-keygen -t rsa -C“you@wherever.com” 并输入您的密码并在询问时确认。
  6. 上一步应创建C:/User/you/ssh/id_rsa.pub,您现在可以在文本编辑器中打开并复制。在github,转到帐户设置,SSH密钥,添加密钥并将其粘贴到密钥框中。
  7. 再次在Git-Bash中(注意下一行的后退): eval `ssh-agent` ssh-add C:/User/you/ssh/id_rsa ssh git@github.com
  8. 以下是您刚才所做的:您运行了ssh-add所需的ssh-agent。然后使用ssh-add记下密钥的位置。然后你试着ssh到GitHub。对最后一个命令的响应应该是您已经在GitHub上成功进行了身份验证,但是您没有shell访问权限。这只是一个身份验证测试。如果身份验证不成功,则必须对其进行排序。试试详细版本:

    ssh -v git@github.com

    假设这有效......

    在Eclipse中,配置远程推送

    1. 窗口> 显示视图> Git > Git Repositories 将添加一个存储库资源管理器窗口。
    2. 在存储库窗口中,选择存储库并展开并右键单击远程,然后选择创建远程
    3. 从GitHub存储库页面复制GitHub存储库URI并将其粘贴到URI框中。
    4. 选择ssh作为协议,然后返回到URI框并在开头添加“git +”,如下所示:

      的git + SSH://git@github.com/UserName/ProjectName.git

    5. 存储库路径框中,删除前导斜杠

    6. 点击下一步并交叉手指。如果您的“auth fail”,请重新启动Eclipse并再次尝试步骤5.
    7. 当您通过身份验证时,在下一个对话框中为源ref选择“master”,单击“Add all branches spec”和“Finish”。
    8. 我没有使用SSH git@github.com,而是使用SSH git@bitbucket.org。

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

答案 3 :(得分:6)

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

答案 4 :(得分:4)

如果您的本地防火墙阻止您的应用程序从您的计算机发送任何网络流量,则可能会导致此问题。即出站流量或出口流量规则。

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

答案 5 :(得分:4)

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

答案 6 :(得分:3)

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

答案 7 :(得分:2)

当我安装了安装了Windows8 / Kaspesky的新笔记本电脑时,我遇到了同样的问题。 我遇到问题eclipse:无法打开git-upload-pack。 我也遇到了maven的问题。 我也遇到了Skype的问题。

当我禁用卡巴斯基时,一切都开始正常工作。

答案 8 :(得分:2)

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

答案 9 :(得分:2)

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

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

Dhttps.protocols = TLSv1.1,TLSv1.2

对于Java7,需要添加TLSv1.1,对于Java8,需要添加TLSv1.2

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

答案 10 :(得分:1)

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

答案 11 :(得分:1)

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

答案 12 :(得分:1)

对于那些仍有此问题的人,上述解决方案均不适合您:
更新您的java和Eclipse版本 在我的情况下,我从java 7更新到java 9,Eclipse Mars更新到Eclipse Oxygen,这个问题解决了!

答案 13 :(得分: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

答案 14 :(得分:0)

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

-vm C:\ PROGRA〜2 \的Java \ jre745 \ BIN \ javaw.exe的 -vmargs -Xms40m -Xmx512m -XX:MaxPermSize参数=256米 -Dsun.lang.ClassLoader.allowArraySyntax =真

答案 15 :(得分:0)

我刚刚遇到同样的错误,“无法打开git-upload-pack”,在Eclipse中使用BitBucket repo试图进行拉动或推送。 我通过将本地分支(Team / Switch To)切换到主分支并进行拉动来解决它,然后切换回我正在处理的分支并再次拉动。

答案 16 :(得分:0)

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

窗口>首选项>常规>网络连接,然后在下拉列表中从“ 本地”中选择“ 手册”。

在这里,只需单击“编辑”,即可添加 http https 的代理URL,端口和凭据。 应用并关闭。

希望它对您有用。

答案 17 :(得分:0)

对于在IBM JDK上运行的Eclipse,在-vmargs之后的eclipse.ini中必须强制执行以下两行:

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

答案 18 :(得分:0)

使用VPN时,我遇到了同样的问题。重新启动互联网即可轻松解决。

答案 19 :(得分:0)

存储库所有者应向您提供贡献者权限: Example

答案 20 :(得分:0)

就我而言,我没有使用GitLab中“克隆”按钮提供的正确URL: GitLab button clone

答案 21 :(得分:0)

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

Screenshot of my network configuration

  

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

答案 22 :(得分:0)

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

答案 23 :(得分:0)

要解决SSL问题,您也可以尝试这样做。

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

需要从git安装目录中复制ca-bundle.crt并将其复制到您的主目录

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

答案 24 :(得分:0)

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

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

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

我刚刚将网络设置从Manual更改为The AWS::SQS::QueuePolicy type applies a policy to SQS queues.,重新启动,错误消失了。

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

Eclipse Network Settings

答案 27 :(得分:0)

问题还可能是系统时间错误(几年),导致Git证书无效。

答案 28 :(得分:0)

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

答案 29 :(得分:-1)

我必须在之前的所有内容之后报告另一种可能性:

我得到了#34;无法打开git-upload-pack"在eclipse GIT拉操作期间(通过代理隧道),所以我必须尝试通过浏览器访问相同的GIT URL,最终在代理中正确进行身份验证,并且只有在通过eclipse之后才可以从GIT中获取而没有任何错误。希望有用。