69

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

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

4

9 回答 9

97

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

git config --add remote.origin.proxy ""
于 2013-05-17T15:10:45.600 回答
42

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

export no_proxy=URLToIgnore

您要忽略URLToIgnore的 URL在哪里。Git您也可以忽略以某个单词结尾的 URL。

export no_proxy=.mylocal

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

export no_proxy=.mylocal URLToIgnore

要使其永久化,请将其添加到您的~/username/.bash_profile文件中。.bash_profile如果在用户根目录中找不到文件,则手动创建它。

有关更多详细信息: 如何暂时禁用 git http 代理

于 2014-03-25T21:20:08.547 回答
9

如果要将配置设置为空值,请确保您拥有 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^

要删除段错误,请检查in中的NULL值。matches()config.c

于 2014-11-11T20:28:58.723 回答
9

对于 Windows 用户

接受的答案要求 git repo 在工作之前存在,第二好的答案仅适用于 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

现在您将有一个回购应用接受的答案。

于 2019-08-20T11:32:15.177 回答
1

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

git config -l --show-origin

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

希望这可以帮助。

于 2018-07-26T12:24:13.363 回答
1

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

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

请注意,这将是每个命令。要使刚刚克隆的 repo 永久保存,您现在可以转到新克隆的 repo 并添加 empty-proxy 设置。

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

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

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

export no_proxy=$no_proxy,<your repo>

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

于 2020-05-25T11:03:15.003 回答
0

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

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

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

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

git config --global --add remote.origin.proxy ""
于 2021-09-02T12:47:12.807 回答
-5

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

git config --global http.proxy [Proxy IP]:[Proxy port]
于 2017-05-18T15:14:50.700 回答