如何让Git使用代理服务器?

我需要从Git服务器签出代码,但它每次都显示“请求超时”。我该怎么解决这个问题呢?

或者如何设置代理服务器?


当前回答

如果你正在使用ubuntu,那么执行以下操作…

步骤1:安装开瓶器

$ sudo apt-get install corkscrew

步骤2:编写名为git-proxy.sh的脚本,并添加以下内容

#!/bin/sh

exec corkscrew <name of proxy server> <port> $*

# <name_of_proxy_server> and <port> are the ip address and port of the server
# e.g. exec corkscrew 192.168.0.1 808 $*

步骤3:使脚本可执行

$ chmod +x git-proxy.sh

步骤4:通过设置环境变量为GIT设置代理命令

$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"

现在使用git命令,例如

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

其他回答

在不知疲倦地尝试这个页面上的每个解决方案后,我的工作是使用SSH密钥代替!

打开Git Bash ssh-keygen.exe -t rsa -C 打开你的Git提供商(Github, Bitbucket等) 添加复制id_rsa。pub文件内容到Git提供者的输入页面(检查您的配置文件)

对于git协议(git://…),安装socat并编写如下脚本:

#!/bin/sh

exec socat - socks4:your.company.com:$1:$2

使其可执行,将其放在您的路径和~/中。Gitconfig set core。Gitproxy到该脚本的名称。

在终端上设置git代理

if

您不希望为每个git项目逐个手动设置代理 始终希望对所有项目使用相同的代理

全局设置一次

git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port

如果您只想为一个git项目设置代理 (在某些情况下,对于某些git连接,你可能不想使用相同的代理或任何代理)

//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:password@proxy_url:proxy_port
git config https.proxy username:password@proxy_url:proxy_port

如果要显示当前代理设置

git config --list 

如果要全局删除代理

git config --global --unset http.proxy
git config --global --unset https.proxy

如果您只想删除一个git根的代理

//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy

使用代理的另一种选择是使用SSH 在git配置中,在ssh地址上配置origin remote。然后使用ssh-keygen命令,它会给你一个公钥,你可以在你的GitLab或Gitab帐户设置和登录相应完成…

1-通过在git客户端中运行git remote -v来验证哪些遥控器正在使用。

2-如果这是http(s) url,将其更改为ssh地址,执行:git remote set-url <远程名称,例如origin> <新的ssh url > 例如

git remote set-url git@gitlab.com:example/myproject.git

3 .如果需要生成登录的SSH密钥,执行命令SSH -keygen -o,该命令生成public(id_rsa. key)。Pub文件)和私钥。

4份公钥内容。(从id_rsa。酒吧文件)

5-去gitlab/githup/....配置文件>设置/ssh-key。创建新的SSH密钥并粘贴公钥内容

我注意到一些事情,想在这里分享:

git config --global http.proxy http://<proxy address>:<port number>

上述方法不适用于SSH url(即git@github.com:<用户名>/<项目名>.git):

git clone git@github.com:<user name>/<project name>.git // will not use the http proxy

如果我们将SSH设置为HTTPS端口(https://help.github.com/en/articles/using-ssh-over-the-https-port),事情也不会改变,因为它只改变了SSH连接连接的端口(默认为22)。