Git通过设置http.proxy配置参数在代理环境中工作。
对于某些地址,我需要绕过代理。是否有无代理/绕过代理配置参数?
答案 0 :(得分:67)
可以基于每个远程覆盖代理 - 请参阅http://git-scm.com/docs/git-config (查找“http.proxy”和“remote。< name> .proxy”设置)。假设你有一个名为“origin”的遥控器,那么你可以用来绕过这个遥控器的代理的命令是:
git config --add remote.origin.proxy ""
答案 1 :(得分:26)
要绕过某些特定的代理,通常是本地地址,您需要做的就是:
export no_proxy=URLToIgnore
URLToIgnore
是您希望Git
忽略的网址。
您也可以忽略以特定字词结尾的网址。
export no_proxy=.mylocal
以.mylocal
结尾的所有网址都会被忽略。忽略多个网址:
export no_proxy=.mylocal URLToIgnore
要使其永久化,请将其添加到~/username/.bash_profile
文件中。如果在用户根目录中找不到.bash_profile
文件,请手动创建它。
答案 2 :(得分:5)
如果要将配置设置为空值,请确保您拥有Git 2.1.2+,例如
git config --add remote.origin.proxy ""
因为如果您决定恢复该遥控器的代理(此处为“origin
”)... ,它将使用早于2.1.2的Git(2014年9月30日)进行段错误强>
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^
”这样的正则表达式,对于任何字符串都不是真的,空的或不是。要删除段错误,请在
config.c
的NULL
中添加对matches()
值的检查。
答案 3 :(得分:3)
可接受的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
现在,您将有一个仓库来应用接受的答案。
答案 4 :(得分:1)
由于Windows / Unix用户角色,如果无法从命令行中删除http_proxy,请尝试这种方法-
git config -l --show-origin
这将根据层次结构基于文件显示当前配置。现在转到特定文件(本地.git / config文件夹文件)并更新/删除http_proxy。
希望这会有所帮助。
答案 5 :(得分:0)
假设您要从克隆开始,那么origin-config并不是那么有用。当我发现自己处于那个位置时,我会做。
$> no_proxy=$no_proxy,<git-url|ip> git clone ...
请注意,这将针对每个命令。要使此永久性仅适用于刚刚克隆的存储库,您现在可以转到新克隆的存储库并添加empty-proxy设置。
$> git config --add remote.origin.proxy ""
但是,如果在所有情况下都希望将此主机或IP排除在代理之外,请使用shell初始化文件对用户永久包含源。
我将以下行放在.bashrc最后
export no_proxy=$no_proxy,<your repo>
我希望这可以使事情变得更清楚!
答案 6 :(得分:0)
老问题,但这里是如何全局配置:
git config --global http.proxy proxy.example.com:3128
git config --global http.https://myserver.localdomain.proxy ''
答案 7 :(得分:-3)
在命令提示符下执行以下命令
git config --global http.proxy [Proxy IP]:[Proxy port]