在Visual Studio 2015中,使用bower,我的包恢复在防火墙后面失败,错误类似于:
ECMDERR无法执行“git ls-remote --tags --heads git://github.com/jzaefferer/jquery-validation.git”,退出代码#-532462766
我已将git配置更新为使用http
而不是git。当我从命令行运行时,命令成功:
但无论如何,Visual Studio或其中一个组件似乎都在使用git
而不是http
。
使用Visual Studio 2015和Bower进行包管理。当它不在防火墙后面时效果很好,但是在防火墙后面我不能使用git://
协议。
在SO(example)的许多其他地方记录的解决方案是运行:
git config --global url."http://".insteadOf git://
我这样做了,现在我的git config -l
看起来像是:
ore.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=Sean Killeen
user.email=SeanKilleen@gmail.com
url.http://.insteadof=git://
但是尽管如此,Visual Studio / npm还是不尊重我的配置,或者使用旧的缓存版本。
Per this thread on npm issue,我看到npm(可能是bower在VS中使用的)使用git@
语法。虽然这不是我在输出中看到的,但我想我会试一试。
我跑了:
git config --global url."https://github.com/".insteadOf git@github.com:
然后我重新启动了Visual Studio,但问题仍然存在。我读到的修复可能永远不适用。
关于如何修复的任何想法?
答案 0 :(得分:61)
使用VS 2015的同样问题,我的解决方法:
安装Git
配置Git使用http代替git://和Git Bash
git config --global url。“http://”.insteadOf git://
编辑(正如g.pickardou指出的那样)您可以使用https更加安全:
git config --global url。“ https ://”.insteadOf git://
配置VS以使用新安装的Git over VS Git
右键单击Bower文件夹(在Dependencies下),然后选择“Configure external tools”
取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”
使用“C:\ Program Files(x86)\ Git \ bin”添加新节点
希望这会对某人有所帮助,
罗热
答案 1 :(得分:13)
微软安装的git版本(至少使用VS2015 Update 1) 支持.gitconfig文件,但默认情况下安装的工具不会给你一种操作方法(像所有其他答案显示使用git配置来解决问题)。
要解决问题而不需要任何额外的安装和诸如此类的东西,只需在C:\ Users \ YourUserName中创建一个.gitconfig文件并将此内容放在那里(这是git config --global将要执行的内容,但是因为你不这样做有一个可以更改配置的git.exe,如果不安装其他你不需要的东西就不能使用它。
[url "https://github.com/"] insteadOf = git@github.com: [url "https://"] insteadOf = git://
答案 2 :(得分:7)
VS2015 Release对我有用的解决方案是:
修改文件C:\ Program Files(x86)\ Microsoft Visual Studio 带有此内容的14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ External \ bower.cmd:
set PATH=C:\Program Files (x86)\Git\bin\;%PATH%
git config --global url."http://".insteadOf git://
git config -l
@"%~dp0\node\node" "%~dp0\bower\node_modules\bower\bin\bower" %*
答案 3 :(得分:6)
我遇到了同样的问题。显然,VS2015 CTP附带的Git.exe不使用.gitconfig。但是如果你在其他地方安装了git命令行工具,你可以手动修复它。
在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External
中,您需要修改文件bower.cmd
。
评论第4和第5行:
rem -- set GIT_PATH=%~dp0\git
rem -- set PATH=%GIT_PATH%;%PATH%`
这将触发命令以使用您已安装的Git,这将获取本地.gitconfig。
确保您已设置适当的git设置:
git config --global url."http://".insteadOf git://
答案 4 :(得分:6)
使用VS 2015,Update 2:只需安装Git
答案 5 :(得分:4)
我在Visual Studio 2015 RC(而不是CTP)中遇到了同样的问题并得到了解决。
2015 RC中的bower.cmd运行不正常,所以我需要在我的VS中禁用它并使用我的PC上安装的官方版本。只需右键单击项目中的“Bower”文件夹并选择“配置外部工具”,然后取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”部分即可轻松完成。
您可能还需要更改“.bowerrc”文件,以使GIT在您项目的正确路径中工作。
完成此操作后,一切都按预期工作。
答案 6 :(得分:3)
绝对有效的最简单答案就在这里。我对此问题感到非常头痛。 只需下载git并安装它。 安装时选择此选项。 Run Git from the windows command prompt
答案 7 :(得分:2)
我在Visual Studio 2015 RC(而不是CTP)中遇到了同样的问题。由于这是我在任何地方找到的唯一相关主题,因此我想在这里添加我的2c。
扩展@MathMau的回答,bower.cmd中的行引用了2015 RC中的不存在,所以我采用了不同的方法并设置了PATH env变量,以便我的整个bower.cmd文件现在看起来像这样:
set PATH=C:\Program Files (x86)\Git\bin\;%PATH%
@"%~dp0\node\node" "%~dp0\bower\node_modules\bower\bin\bower" %*
请注意,第一行是我添加的,第二行是现有内容。
我第一次这样做时,Visual Studio在程序包恢复期间崩溃,但似乎在重新启动VS后工作。
答案 8 :(得分:1)
设置正确的代理设置真是太痛苦了。 我分享我的解决方案。
我使用Visual Studio 2015在Windows 10上工作。 我必须在工作时设置代理设置并在家中将其删除。
要实现这一目标,您有两种解决方案。
配置Npm。在管理员提示中执行以下cmd。
> cd "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External"
> npm.cmd config set --global http_proxy http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
> npm.cmd config set --global http_proxy http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
配置Git。添加位于C:\ Windows \ Users \%USERNAME%的.gitconfig文件。然后添加以下键/值。
[http]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
[https]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
配置Bower。添加位于C:\ Windows \ Users \%USERNAME%的.bowerrc文件。然后添加以下键/值。
{
"proxy": "http://proxyuser:proxypwd@proxy.server.com:8080",
"https-proxy": "http://proxyuser:proxypwd@proxy.server.com:8080"
}
警告:如果您的代理密码中包含特殊字符,则必须对代理网址进行编码。例如:
EtVoilà:)
我在我的机器上全局安装了node.js,npm,git和bower(因为我需要更多的控制权,而不仅仅是VS中可用的外部/工具)。
npm install -g bower
我为Windows创建了2个powershell脚本来设置/取消设置代理设置(在Windows 10上测试过)。
在工作,我需要设置代理设置。
在PowerShell中运行> ./proxy.ps1
在主页,我必须删除代理设置。
在PowerShell中运行> ./proxy.disabled.ps1
# System Environment variable
$env:HTTP_PROXY = "http://proxyuser:proxypwd@proxy.server.com:8080"
$env:HTTPS_PROXY = "http://proxyuser:proxypwd@proxy.server.com:8080"
# Fix (some tools uses lowercase env variables)
$env:http_proxy = "http://proxyuser:proxypwd@proxy.server.com:8080"
$env:https_proxy = "http://proxyuser:proxypwd@proxy.server.com:8080"
# Git config
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
git config --global https.proxy http://proxyuser:proxypwd@proxy.server.com:8080
# Npm config
npm config set proxy http://proxyuser:proxypwd@proxy.server.com:8080
npm config set https-proxy http://proxyuser:proxypwd@proxy.server.com:8080
# Restart Windows
Restart-Computer -Confirm
# Delete System Environment variable
Remove-Item env:\HTTP_PROXY
Remove-Item env:\HTTPS_PROXY
Remove-Item env:\http_proxy
Remove-Item env:\https_proxy
# Reset Git Config
git config --global --unset http.proxy
git config --global --unset https.proxy
# Reset Npm Config
npm config --global delete proxy
npm config --global delete https-proxy
# Restart Windows
Restart-Computer -Confirm
警告:如果您的代理密码中包含特殊字符,则必须对代理网址进行编码。例如:
警告:UNSET PROXY =>某些bower设置可以在位于C:\ Users \%USERNAME%的 .bowerrc 文件中覆盖。换句话说,如果它不起作用,请检查您是否有.bowerrc文件。然后删除以下密钥(如果存在):
{
...
"proxy": "http://proxyuser:proxypwd@proxy.server.com:8080",
"https-proxy": "http://proxyuser:proxypwd@proxy.server.com:8080",
...
}
警告:UNSET PROXY =>某些nmp / node设置可以覆盖在位于C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ External \ node \的 npmrc 文件中。等等换句话说,如果它不起作用,请检查您是否有npmrc文件。然后删除以下密钥(如果存在):
http_proxy="http://proxyuser:proxypwd@proxy.server.com:8080"
https_proxy="http://proxyuser:proxypwd@proxy.server.com:8080"
EtVoilà:)
答案 9 :(得分:0)
如果您有一个友好的防火墙管理员,请让他通过定义以下防火墙策略来允许访问外部git存储库:
TCP 9418(不需要UDP)
答案 10 :(得分:0)
@Rogerio Soares给出的答案很好,我想很多人会发现它非常有用(包括我自己)。
那就是说,在这里工作,我可以安装的工具非常非常有限(意味着我无法在没有获得许多人的许可的情况下安装另一个版本的Bower),而且我的主目录被映射到一个策略在z:\
的网络共享。每次我发出git config --global
配置git时,配置设置都会放在z:\.gitconfig
中。使用成熟的Git SCM可以很好地使用这个配置文件。但是,显然,libgit2sharp(由嵌入Visual Studio 2015的Git版本使用)需要此文件位于c:\username\.gitconfig
。
因此,在将.gitconfig
文件从z:\
复制到c:\username\
之后,我就可以直接从命令行运行Visual Studio的版本的bower。
答案 11 :(得分:0)
如果您想要全球解决方案。
警告:它可以通过不同的应用程序影响多个代理设置,但它肯定是你想要的:)
注意强> 如果您的用户名中包含特殊字符:代理设置中的密码,则需要对其进行URLENCOD。示例:http://DOMAIN%5Cuser+name%3AP%40%24%24w0rd@proxy.server.com:8080
您必须添加2个环境变量。
要在Windows 10上执行此操作: