Git / Bower错误:退出代码#128和连接失败

86

我正在使用Bower安装几个库。这里是为了演示目的,我正在安装bootstrap。无论安装哪个包,我都会收到以下错误:

C:\Scott>bower install bootstrap
bower not-cached    git://github.com/twbs/bootstrap.git#*
bower resolve       git://github.com/twbs/bootstrap.git#*
bower ECMDERR       Failed to execute "git ls-remote --tags --heads git://github
.com/twbs/bootstrap.git", exit code of #128

Additional error details:
fatal: unable to access 'https://github.com/twbs/bootstrap.git/': Failed connect
to github.com:443; No error    

我尝试使用以下解决方案来解决第一个错误 - 我从这个搜索结果中找到的:

git config --global url."https://".insteadOf git://
然而,这并不起作用,那个页面上找到的任何其他解决方案也都无效。对于第二个错误的解决方案搜索结果表明,如果您在公司网络/防火墙后面工作,则设置代理服务器的用户名/密码将解决此问题。然而,我没有使用代理服务器,因为我在家用个人电脑/网络(Windows 7 x64)。谢谢!编辑:附带错误信息的命令行窗口:enter image description here

可能是重复的问题:Bower使用仅限https安装? - kenorb
我曾经遇到过与npm和https相关的类似问题,通过使用git config --global url."git@github.com:".insteadOf "https://github.com"解决了该问题。 - grabantot
24个回答

125

我知道这并不能"修复"问题,但你可以使用

git config --global url."https://".insteadOf git://

告诉git使用HTTPS而不是GIT,这对我安装npm依赖项很有效。


10
是只有我这样,还是其他人也无法使用?这是几乎所有与Bower 128错误相关的谷歌搜索结果中排名最高的文章,在更改了这个设置后,Bower仍然使用git协议。请问您需要翻译些什么? - Bloodyaugust
1
@Bloodyaugust,对我也不起作用。仍然使用 git:// - Logan
1
这对我起作用了,尽管我不清楚问题出在哪里。 - Mendhak
也对我有效,但我也不知道为什么。@Bloodyaugust、@Logan,你们有检查过全局的.gitconfig文件 (git config --global --edit) 吗?只是,你懂的,为了确认一下。可能一些更具体的.gitconfig文件(按用户或按Git项目)正在覆盖它。 - Rafael Eyng
2
对我有用 - 我猜测在我尝试这个的工作机器上,端口22被关闭了。所以无法通过SSH连接到github :( 我可以说我确实是从(git)项目文件夹中运行了该命令...如果这有任何区别的话。 - demaniak
显示剩余3条评论

34

不要运行这个命令,改为:

 git ls-remote --tags --heads git://github.com/twbs/bootstrap.git

你需要运行这个命令:

 git ls-remote --tags --heads git@github.com:twbs/bootstrap.git
或者
 git ls-remote --tags --heads https://github.com/twbs/bootstrap.git

或者您可以运行git ls-remote --tags --heads git://github.com/twbs/bootstrap.git,但您需要始终以以下方式使用https:

 git config --global url."https://".insteadOf git://

参考资料:https://github.com/bower/bower/issues/50


谢谢。我尝试强制git始终使用https,但不确定是否成功--请参见我在原帖中附加的图片。无论我尝试安装哪个bower包,错误仍然会发生。 - azsl1326

20

我在公司网络上遇到这个问题。

这很奇怪,因为我一直使用ssh来连接git,从来没有遇到过问题。

我尝试了https,但不起作用,所以我向git的配置中添加了代理设置,然后一切都好了。

git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
git config --global https.proxy https://proxyuser:proxypwd@proxy.server.com:8080

确保它能够正常工作

git config --list

谢谢...这也是我的情况。我必须配置git使用co.代理。 - Paul T.
如果这对您有用,并且您也在使用npm,则可能需要设置相应的代理:npm config set proxy http://<your-corporate-proxy>npm config set https-proxy http://<your-corporate-proxy> - aponzani
1
对于一些企业代理,可能需要使用 git config http.sslVerify "false" - John Fouhy

8

我的电脑上端口22被阻止了。一旦我找到了阻止它的原因并打开了该端口,我就可以顺利运行bower install命令。


无论是TCP还是UDP,端口22或9418都没有被打开,这导致我无法解除阻止。 - kayleeFrye_onDeck

6

看起来 azsl1326 无法使用端口 9418 (git://)上的 bower (git),然后告诉 git 使用端口 22(https://)代替。这仍然失败,但是打开端口 22 得到了期望的结果。

最直接的解决方案是打开端口 9418。这是 git:// 协议使用的端口。


1
我认为这应该是被接受的答案,因为很明显是由于防火墙阻止了git端口9418。至少在我的CentOS服务器上使用CSF防火墙时是这样的情况。 - Christos Lytras
无论是TCP还是UDP,端口22或9418都没有被打开,这导致我无法解除阻止。 - kayleeFrye_onDeck
你的远程仓库在哪里?那台服务器是否已开放这些端口? - Henry

5

进入您的应用程序文件夹并运行以下命令:

git config --global url."https://".insteadOf "git://

"

这样应该可以解决您的问题。


3

您是否在防火墙后面?

当Git被调用时,它不会获取代理配置,因此需要明确设置环境变量,例如:

export HTTP_PROXY=http://username:password@proxyserver:port/
export HTTPS_PROXY=http://username:password@proxyserver:port/

如果您的公司代理不需要身份验证,只需在URL中省略username:password@即可。

对我来说起作用了!


3
如果你所在的国家(例如中国大陆)屏蔽了Github,那么你可以建立一个代理,例如使用goagent和gae,然后为git设置代理地址。
git config --global http.proxy 127.0.0.1:8087

3
也许你需要生成一个ssh密钥,这样你就可以通过github进行身份验证。请参考生成ssh密钥的帮助文档。

2

这个错误与防火墙配置有关。你会注意到bower尝试通过git://协议而不是http://协议来联系git。你需要打开端口9418,在iptables配置中加入以下两行:

iptables -t filter -A INPUT -p tcp --dport 9418 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 9418 -j ACCEPT

这应该能解决问题。

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