Git 代理绕过

问题描述 投票:0回答:11

Git 通过设置 http.proxy 配置参数在代理环境中工作。

对于某些地址,我需要绕过代理。是否有 no-proxy/bypass-proxy 配置参数?

git http proxy
11个回答
111
投票

可以在每个远程的基础上覆盖代理 - 请参阅http://git-scm.com/docs/git-config (查找“http.proxy”和“remote..proxy”设置)。假设您有一个名为“origin”的遥控器,那么您可以用来绕过该遥控器的代理的命令是:

git config --add remote.origin.proxy ""

44
投票

要绕过某些代理(通常是本地地址),您需要做的就是:

export no_proxy=URLToIgnore

其中

URLToIgnore
是您想要
Git
忽略的 URL。 您还可以忽略以某个单词结尾的 URL。

export no_proxy=.mylocal

所有以

.mylocal
结尾的网址都将被忽略。忽略多个 URL:

export no_proxy=.mylocal URLToIgnore

要使其永久化,请将其添加到您的

~/username/.bash_profile
文件中。如果您在用户根目录中找不到
.bash_profile
文件,请手动创建它。

欲了解更多详情: 如何暂时禁用 git http 代理


11
投票

Windows 用户

已接受的answer需要git repo预先存在才能工作,而第二好的answer仅适用于linux和Mac。因此,在 Windows 中,要使其适用于 https://git-url.com/project/repo-name.git 在命令提示符中尝试以下操作

set no_proxy=git-url.com

然后

git clone git-url.com/repo-name.git

现在您将拥有一个存储库来应用已接受的答案。


10
投票

如果您想将配置设置为空值,请确保您有 Git 2.1.2+,例如

git config --add remote.origin.proxy ""

因为如果您决定恢复该远程代理(此处为“

origin
”)...它会因 2.1.2 之前的 Git(2014 年 9 月 30 日)而出现段错误

参见 提交 c846664 (

tanayabh
)

make config --add
对于空值和
NULL

表现正确

目前如果我们有一个像这样的配置文件,

[foo]
        baz
        bar =

我们尝试类似“

git config --add foo.baz roll
”的操作,Git 会出现段错误。此外,对于“
git config --add foo.bar roll
”,它将覆盖原始值,而不是追加到现有的空值之后。

问题在于用于模拟

--add
中的
git_config_set_multivar_in_file()
的正则表达式,“
^$
”,在理想情况下不应与任何字符串匹配,但对于空字符串是正确的。
相反,使用像“
a^
”这样的正则表达式,它对于任何字符串(无论是否为空)都不为真。

要删除段错误,请在

NULL
 中的 matches()
 中添加对 
config.c
值的检查。


3
投票

假设您从克隆开始,origin-config 的东西就没那么有用了。当我发现自己处于那个位置时,我就会这么做。

$> no_proxy=$no_proxy,<git-url|ip> git clone ...

请注意,这将针对每个命令。要使刚刚克隆的存储库永久保留此设置,您现在可以转到新克隆的存储库并添加空代理设置。

$> git config --add remote.origin.proxy ""

但是,如果您希望在所有情况下都从代理中排除此主机或 IP,请使用您的 shell 初始化文件为您的用户永久包含您的来源。

我会将以下行放在 .bashrc 的最后

export no_proxy=$no_proxy,<your repo>

我希望这能让事情变得更清楚!


2
投票

如果您尝试克隆新的存储库,其他答案中给出的某些解决方案将失败,因为 git 抱怨本地文件夹不包含 git 存储库。

在这种情况下,这对我有用

git config --global --add remote.origin.proxy ""

1
投票

由于 Windows / Unix 用户角色,如果您无法从命令行消除 http_proxy,请尝试此方法 -

git config -l --show-origin

这将根据层次结构打印基于文件的配置。现在转到特定文件(本地 .git/config 文件夹文件)并更新/删除 http_proxy。

希望这有帮助。


1
投票

没有一个答案可以帮助我解决这个问题。幸运的是,我可以找到一个网站,它为我提供了唯一可行的解决方案:

在项目的根目录中,您可以找到一个隐藏的.git文件夹。在它里面,有一个名为“config”的文件。只需打开它并添加这些行:

[http]
        proxy =
[https]
        proxy =

更改后我终于可以再次克隆、拉动和推送。

鸣谢:https://collectednotes.com/agusluques/git-commands-ignoring-proxy-on-windows


0
投票

老问题,但这是如何全局配置的:

  1. 设置代理:
git config --global http.proxy proxy.example.com:3128
  1. 通过将代理设置为空字符串来关闭特定 URL 的代理(将 myserver.localdomain 替换为您的服务器 FQDN):
git config --global http.https://myserver.localdomain.proxy ''

0
投票

您可以直接修改全局

.gitconfig
文件。
它位于
C:\Users\[UserName]\.gitconfig

以下是我当前的配置。

[http]
    sslverify = true
    proxy = http://100.100.100.100:8080
[http "https://github.mycompany.net"]
    sslverify = false
    proxy = 

此配置意味着“我通常会在任何地方使用

sseverify=true
proxy=http://100.100.100.100:8080
,但是
sslverify=false
proxy=
专门用于
https://github.mycompany.net
”。


-5
投票

只需在命令提示符下执行以下命令

git config --global http.proxy [Proxy IP]:[Proxy port]
© www.soinside.com 2019 - 2024. All rights reserved.