【问题标题】:Set proxy for Microsoft Git Provider in Visual Studio在 Visual Studio 中为 Microsoft Git 提供程序设置代理
【发布时间】:2017-05-31 13:05:31
【问题描述】:

我必须使用 http 代理连接到 Git 服务器。我可以通过 Git Bash 设置它,也可以通过以下命令使用它:

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

但是,我正在使用 Microsoft Git Provider 与 Visual Studio 的集成。而且我无法在任何地方设置代理以连接到 Git 服务器。有没有办法可以在 Visual Studio 中保存 Microsoft Git Provider 的代理详细信息?

【问题讨论】:

  • 我很困惑 git config 声明对您不起作用?我已经尝试过了(以及 https 语句),它似乎已经在我的 Git for Windows 设置中永久更改了它。即我可以从 Visual Studio 和其他 Git 程序中克隆(直接在 git bash 或 Git 扩展等中)

标签: git visual-studio visual-studio-2012 proxy


【解决方案1】:

在 Visual Studio 中没有直接设置 Git 代理的方法

您无需在 Visual Studio 中设置任何内容即可设置 Git 代理 - 事实上,我还没有找到任何直接在 Visual Studio 中执行此操作的方法,以及使用 devenv.exe 的替代答案。配置我个人无法上班。


但是,有一个简单的解决方案

只要您在安装期间选中了 Git,Visual Studio 就会安装适用于 Windows 的 Git(最新版本默认有此选项)。一旦安装了适用于 Windows 的 Git(或任何操作系统上的一般 Git),您就可以直接在任何命令行、控制台或 Powershell 窗口中轻松设置全局 Git 代理设置。

其实你可以直接在Visual Studio中用Tools/NuGet Package Manager/Package Manager Console打开一个命令或者Powershell提示符。

如果安装了 Git,您可以在任何命令行输入git,您将获得所有 git 命令的列表。如果没有发生这种情况,您可以直接安装适用于 Windows 的 Git - 我建议您在安装 Git Extensions GUI 应用程序的过程中这样做,但您的情况可能会有所不同。

你特别需要的 git 命令是:

git config --global http.proxy http://USER:PASSWORD@URL:PORT
git config --global https.proxy http://USER:PASSWORD@URL:PORT

地点:

  • 代理地址可能是http://不是 https://
  • USER:PASSWORD@ 是您的代理需要的用户名和密码
  • URL 是代理的完整域名
  • PORT 是代理的端口,http 和 https 可能不同

这将在您的“MyDocuments”文件夹中的全局配置文件中设置您的代理。根据您的操作系统和其他因素,该文件可能会以不同的方式命名或放置在其他地方。您始终可以使用以下命令直接查看此文件并编辑部分和键/值对:

git config --global -e

这将在 Git 的当前编辑器设置中打开全局配置,或者可能是系统默认文本编辑器。您还可以通过位于 repo 目录中并省略 --global 标志来查看任何给定 repo 的配置文件。

设置代理后,您应该会在文件中看到类似以下内容:

[http]
    proxy = <http://user:pass@url:port>
[https]
    proxy = <http://user:pass@url:port>

您可以直接输入这些值而不是使用配置命令,或者可以删除它们以从配置中删除代理。

注意:此文件也是用于提交的 user.name 和 user.email 的存储位置 - 请参阅 [user] 部分。


其他有用的代理 Git 配置


1、如果你想为当前本地repo设置代理,也可以不用--global或者替换为--local(发出命令时必须在repo目录下)。


2. 此外,您可以为特定 URL 设置代理,如下所示:

git config --global http.<full URL to apply proxy>.proxy <http://user:pass@url:port>
git config --global https.<full URL to apply proxy>.proxy <http://user:pass@url:port>

请注意,应使用完整的 URL(即前面的 http://https://)。


3. 另外,如果你有多个远程仓库,比如originupstream,需要不同的代理,你可以专门设置一个代理。

git config --global http.upstream.proxy <http://user:pass@url:port>
git config --global https.upstream.proxy <http://user:pass@url:port>


4. 您可以通过将"" 替换为代理URL 来将代理设置为空。这可能很有用,例如,您想在全局范围内设置代理,然后排除公司防火墙后面的特定 URL(例如企业,Github 的本地版本),并且代理不处理本地地址正确。这也可能对 localhost 和其他特殊地址或直接 IP 地址有所帮助。


5. 您可以使用以下命令检查给定 URL 的代理是什么:

git config --get-urlmatch http.proxy <any random full URL>

例如:

git config --get-urlmatch http.proxy https://github.com

【讨论】:

  • 谢谢 - 这解决了我连接到我们的 git 存储库的问题......但说真的,我们在 2018 年,必须使用命令行进行代理设置? Microsoft 不再用户友好性了吗...?
  • @MikeGledhill 你是在暗示微软曾经做过用户友好吗? :) 作为记录,您可以使用 GIT Extensions 开源工具通过可视化 GUI 设置所有相同的东西 - 这是我用于大多数 Git 操作的工具,但有时您确实需要恢复到命令行工具。 Visual Studio 本身并不执行 Git,它与 Git 交互,因此不要期望所有功能都可用,而只是那些为大多数客户提供最大价值的功能。随时提交增强请求(以及在哪里提交......)。 :)
  • 确保设置了http 代理,因为我在.gitconfig 中只定义了https,这导致了连接错误。我尝试根据@mikep 的回答使用https url 设置代理,并从Visual Studio 收到关于不支持https url 的ServiceConnectionManager 错误。我恢复了devenv.exe.config 文件并且对.gitconfig 的更新工作正常。
  • 有没有办法让用户名和密码在代理 URL 中硬编码?
  • @RossPresser 您可以尝试不输入用户名和密码,看看会发生什么 - 它可能会要求您每次在某个命令窗口中输入信息。另外,尝试只使用用户名并查看 VS 是否提供密码窗口。我没有这种情况那么不确定。自从这篇文章以来,出现了“Windows Credential Manager”或名称非常相似的东西,Git 确实与之交互 - 你可以检查一下,看看代理用户名/密码是否被覆盖。另请注意 - 它仅在您的个人 .gitconfig 中硬编码。我很惊讶您的代理没有使用 SSO 或类似的登录方式。
【解决方案2】:

您可以像 https://msdn.microsoft.com/en-us/library/dn771556.aspx 一样为 Visual Studio 设置代理:

在以下位置查找 devenv.exe.config(devenv.exe 配置文件):%ProgramFiles%\Microsoft Visual Studio 14.0\Common7\IDE(或 %ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\IDE)。

在配置文件中,找到&lt;system.net&gt; 块,并添加以下代码: XML

<defaultProxy enabled="true" useDefaultCredentials="true">  
    <proxy bypassonlocal="True" proxyaddress=" HYPERLINK "http://<yourproxy:port#" http://<yourproxy:port#>"/>  
</defaultProxy>  

您必须在 proxyaddress="http://.

中为您的网络插入正确的代理地址

【讨论】:

  • 代理地址具体需要替换什么? proxyaddress= 声明是一团糟。您是否两次都替换了http://&lt;yourproxy:port#,并排除了第二个实例上的尾随&gt;"?无论哪种方式,我都尝试过,但它似乎并没有真正起作用(或做任何事情)。
【解决方案3】:

如果对某人有帮助,VS 2017 有一个文件夹:

%ProgramFiles%\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\etc

使用名为 gitconfig 的文件 - 与 C:\Users\[UserName]\.gitconfig 中的文件相同 - 您可以在其中设置 VS 的代理配置。

【讨论】:

  • 看起来这是 MS Team Explorer/TF 包在使用此工具集时为 Windows 安装 Git 的地方。 Git\mingw32\etc\gitconfig 文件很可能是“系统”gitconfig 文件,它将影响 PC 上的所有用户。您应该可以使用git config -e --system 打开它进行编辑。命令行中的.gitconfig' in the users home directory will only affect that particular user, and can be opened with git config -e --global`。
【解决方案4】:

另一种方法是转到您的用户文件夹 c:\users\&lt;account name&gt;(在我的情况下为 c:\users\danielj)并创建一个名为 .gitconfig 的文件。

粘贴以下内容:

[user]
    name = <your name>
[user]
    email = <your email address>
[http]
    sslVerify = false
    proxy = "http://<username>%40<domain e.g. domain.com>:#<password>@<proxy server name>:<port>"
[https]
    sslVerify = false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 2018-06-10
    相关资源
    最近更新 更多