git://通过代理

时间:2011-05-02 18:28:34

标签: git proxy git-config

我在阻止端口9418(git)的防火墙后面,并且我正在尝试安装一些明确执行git://github.com/...签出的工具,因此我无法切换到https进行结帐。 / p>

所以我想知道是否可以通过代理将所有流量重定向到端口9418,如果是,如何:)

4 个答案:

答案 0 :(得分:77)

如果你在谈论git子模块,试试这个:

git config --global url.https://github.com/.insteadOf git://github.com/

......取自here

这样,您不需要设置任何代理,也不需要运行任何脚本。

答案 1 :(得分:22)

查看Git config中的core.gitproxy设置。

快速谷歌搜索显示这个脚本可能有用(或者可能没有 - 我没试过):https://gist.github.com/49288

答案 2 :(得分:3)

您需要使core.gitProxy指向将通过SOCKS代理将git连接到远程服务器的代理命令。您可以使用以下内容创建脚本以充当代理命令:

nc -x <your_proxy_host>:<your_proxy_port> $1 $2

表示远程主机和端口的两个参数将由git传递给代理命令。如果您将此脚本命名为git-proxy并可通过$PATH访问该脚本,则可以致电git config进行设置:

git config --global --add core.gitProxy git-proxy

答案 3 :(得分:2)

您是否尝试过基于ssh的TCP隧道?如果你有一个ssh服务器(a)在你的防火墙之外,(b)允许IP转发,你可以这样做:

ssh -L localhost:9418:<remote>:9418 me@remote-ssh-server

或者,如果您必须在端口443上运行sshd以绕过防火墙,

ssh -P 443 -L localhost:9418:<remote-host>:9418 me@remote-ssh-server

然后,本地:

git checkout git://localhost/...

显然这不是透明的,而且有点令人费解 - 毫无疑问,那里的工具更专门针对这个问题。但是,我通常使用这种方法,因为它使用我必须使用的工具(ssh和我租用的廉价虚拟服务器)。

(我实际上从未尝试使用git连接,但我认为没有理由说它不起作用。我已经将它与许多其他单TCP端口协议一起使用而没有问题。)