如何让 git 通过代理和 IntelliJ Idea 工作?

Posted

技术标签:

【中文标题】如何让 git 通过代理和 IntelliJ Idea 工作?【英文标题】:How to get git to work through a proxy and IntelliJ Idea? 【发布时间】:2011-04-03 05:33:56 【问题描述】:

如何在 IntelliJ Idea 中为 GIT 配置代理设置?我已经为插件设置了代理设置,但我无法为 GIT 找到它;并且帮助文件只提到了颠覆。

感谢任何帮助。

【问题讨论】:

【参考方案1】:

你必须为 git 而不是为 intelliJ 配置代理,intelliJ 只会调用 git 命令行。

git config --global http.proxy yourProxy:port 应该这样做。

【讨论】:

在我的情况下,我必须添加一个额外的步骤才能使其工作 -> 在 Intellij -> 首选项 -> 搜索 git -> 选择 git -> ssh 可执行文件 -> 到本机。而不是内置的。这导致 bitbucket 正在使用 ssh。 使用git config --global http.proxy http://username:password@host:port 添加代理后,由于代理提供的自签名证书,我的克隆尝试失败。这个答案提供了证书错误的解决方案:***.com/a/11622001/669645【参考方案2】:

为了完整起见,我想添加如何跳过代理以使用 ssh 访问 git 服务器或安全站点,例如私有 github 存储库。

对于 intellij 使用此选项时,您必须在 Project Settings --> Version Control --> VCS --> Git --> SSH Executable 中选择使用 native ssh 实现

我们使用一种叫做开瓶器的工具。这适用于 CygWin(通过 cygwin 主页上的设置)和使用您最喜欢的打包工具的 Linux。

对于 MacOSX,我参考此blogpost 将其安装到您的 Mac 上。

命令行如下:

corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

proxyhost和proxyport是https代理的坐标。

targethost 和 targetport 是要通过隧道连接的主机的位置。

authfile 是一个文本文件,其中 1 行包含您的代理服务器用户名/密码,以冒号分隔

例如:

abc:very_secret

使用 git:// 协议的安装:通常不需要!

创建帮助脚本来创建隧道

创建一个脚本~/bin/gitproxy,其中包含:

#!/bin/bash
corkscrew proxy.colo.elex.be 3128 github.com 9148 ~/.ssh/proxy_auth 
在 ~/.ssh/ 文件夹中创建 proxy_auth 文件

确保它不会被窥探。

设置环境变量为git定义代理命令

$ export GIT_PROXY_COMMAND=/home/pti/bin/gitproxy

您可以将其放在来自 .bashrc 的部分或脚本中,该部分或脚本会动态检测您是否在代理后面。如果未定义变量,则 git 将照常工作。

测试一下

安装使用“普通”ssh 协议进行 git 通信 通过将其添加到 ~/.ssh/config 这个技巧可以用于普通的 ssh 连接

主机 gitproxy 主机名 github.com 端口 22 ProxyCommand 开瓶器 %h %p ~/.ssh/proxy_auth

享受吧!

【讨论】:

【参考方案3】:

在我的情况下,我必须通过 MSDOS 命令行设置代理,然后它推送结果而没有 407 错误

SET HTTP_PROXY=http://user:passs@proxydomain.com:portnumber

【讨论】:

注意重启会清除这个conf,因此如果你想永远设置它,你应该把它添加到系统变量菜单中。这是此 Windows 设置过程的链接。 computerhope.com/issues/ch000549.htm

以上是关于如何让 git 通过代理和 IntelliJ Idea 工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 TeamCity 构建代理以通过 SOCKS 代理使用 git 和 git:// 协议?

如何使用 Git / IntelliJ 将整个文件从一个分支移动/复制到另一个分支? [复制]

如何强制 Git 通过其 ssh 连接使用 socks 代理?

如何通过 HTTP 代理使用 Bazaar?

git clone 是不是通过 NTLM 代理工作?

IntelliJ git 合并工具