首页 文章

让git与代理服务器一起工作

提问于
浏览
808

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

我需要从git服务器检出代码,每次都显示“请求超时” . 我该如何解决这个问题?

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

17 回答

  • 1

    要使用的命令:

    git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
    
    • proxyuser 更改为您的代理用户

    • proxypwd 更改为您的代理密码

    • proxy.server.com 更改为代理服务器的URL

    • 8080 更改为代理服务器上配置的代理端口

    如果您决定随时重置此代理并在没有代理的情况下工作:

    要使用的命令:

    git config --global --unset http.proxy
    

    最后,检查当前设置的代理:

    git config --global --get http.proxy
    
  • 5

    这对我来说很有用,在企业防火墙后面的Windows XP中 .

    我没有安装任何本地代理或除了git v1.771之外的任何其他软件http://code.google.com/p/msysgit/downloads/list?can=3

    $ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
    $ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
    $ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
    $ git push origin master
    

    proxyuser =我的IT部门分配的代理用户,在我的情况下,它是我用来登录我的PC的同一个Windows用户,即Active Directory用户

    proxypwd =我的代理用户的密码

    proxy.server.com:8080 =代理名称和端口,我从控制面板,Internet选项,连接,Lan设置按钮,代理服务器部分内的高级按钮获取它,使用第一(http)行上的服务器名称和端口 .

    mygithubuser =我用来登录github.com的用户

    mygithubpwd =我的github.com用户的密码

    repoUser =回购的用户所有者

    repoName =回购的名称

  • 0

    设置名为 http_proxy 的系统变量,其值为 ProxyServer:Port . 这是最简单的解决方案 . 分别使用 https_proxy 作为daefu在评论中指出 .

    设置gitproxy(作为sleske提及)是另一种选择,但这需要一个“命令”,这不像上面的解决方案那么简单 .

    参考文献:http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html

  • 1446

    如果配置代理服务器的命令行方式不起作用,您可以只编辑.gitconfig(在配置文件的根目录中,这可能隐藏在C:\ Documents and Settings和某些网络驱动器上)并添加此:

    [http]
        proxy = http://username:password@proxy.at.your.org:8080
    

    但是,YMMV仅涵盖了命令行配置的第一步 . 您可能还必须编辑系统git配置,我不知道它们隐藏在哪里 .

  • 47

    作为使用 git config --global http.proxy address:port 的替代方法,您可以在命令行上设置代理:

    git -c "http.proxy=address:port" clone https://...
    

    优点是代理不是持久设置的 . 在Bash下你可以设置一个别名:

    alias git-proxy='git -c "http.proxy=address:port"'
    
  • 4

    如果您使用的是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
    
  • 2

    由于Windows中有多个 .gitconfig 文件,因此面临同样的问题,按照以下步骤修复相同的问题:

    Step 1: 打开Git BASH

    Step 2: 查找 .gitconfig ,执行以下命令:

    git config --list --global --show-origin
    

    Step 3: 复制 .gitconfig 中的以下内容:

    [http]
        proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
        sslverify = false
    [https]
        proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
        sslverify = false
    [url "http://github.com/"]
        insteadOf = git://github.com/
    
    [user]
        name = Arpit Aggarwal
        email = aggarwalarpit.89@gmail.com
    
  • 11

    尝试将以下内容放到〜/ .gitconfig文件中:

    [http]
        proxy = http://proxy:8080
    [https]
        proxy = http://proxy:8080
    [url "https://"]
        insteadOf = git://
    
  • 19

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

    #!/bin/sh
    
    exec socat - socks4:your.company.com:$1:$2
    

    使其可执行,将其放在您的路径中,并在 ~/.gitconfig 中设置 core.gitproxy 到该脚本的名称 .

  • 36

    除了这些答案,我发现有助于考虑这两点:

    可能需要强制执行身份验证方案:

    [http]
        # https://github.com/git/git/blob/master/Documentation/config.txt
        proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
    

    此外,通常使用NTLM身份验证架构,可能需要明确地提供AD域 .

    在git bash中:

    echo %userdomain%
    

    并相应地更新http.proxy:

    git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
    

    无论如何,通过添加CURL日志可以帮助调查:

    export GIT_CURL_VERBOSE=1
    
  • 7

    I work on Windows XP at work(state/gov), so I did my research and found this here and it worked for me. Hope this helps :)

    The http_proxy Environment Variable

    如果使用代理服务器或防火墙,则可能需要设置http_proxy环境变量才能从命令行访问某些URL . 示例:为perl安装ppm或在linux中应用rpm,更新ubuntu

    使用代理服务器的主机名或IP地址设置http_proxy变量:http_proxy = http:// [proxy.example.org]

    如果代理服务器需要用户名和密码,请按以下格式包含它们:http_proxy = http:// [username:password@proxy.example.org]

    如果代理服务器使用80以外的端口,请包含端口号:http_proxy = http:// [username:password@proxy.example.org:8080]

    Windows XP

    打开“控制面板”,然后单击“系统”图标 . 在“高级”选项卡上,单击“环境变量” . 单击System variables面板中的New . 使用适当的代理信息添加http_proxy(请参阅上面的示例) .

    Linux, Solaris or HP-UX

    使用特定于shell的命令设置http_proxy环境变量(例如,设置或导出) . 要使此更改持久化,请将该命令添加到shell的相应配置文件中 . 例如,在bash中,将以下行添加到.bash_profile或.bashrc文件中:

    http_proxy = http:// [username:password @ hostname:port]; export $ http_proxy

  • 9

    如果你有安装和配置tsocksproxychains,即可

    $ tsocks git clone <you_repository>
    

    要么

    $ proxychains git clone <you_repository>
    

    为了缩短它,我为 proxychains 创建了一个符号链接 /usr/bin/p ,所以我可以像这样使用它

    p git clone <you_repository>
    

    我可以用它代理任何命令,

    p <cmd-need-be-proxied>
    

    顺便说一句,proxychains很长一段时间没有更新,你可能想试试proxychians-ng

  • 1

    Setting git proxy on terminal

    如果

    • 您不希望手动逐个为每个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 root的代理

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

    对于Windows用户:如果 git configset http_proxy= 不起作用,this answer可能会有所帮助:

    http:// 替换git存储库的 git:// 协议 . 注意,无论如何,你必须首先设置 http_proxy .

  • 123

    这是代理设置

    git config --global http.proxy http://<username>:<pass>@<ip>:<port>
    git config --global https.proxy http://<username>:<pass>@<ip>:<port>
    
  • 26

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

    • 打开Git Bash

    • $ ssh-keygen.exe -t rsa -C

    • 打开你的Git提供者(Github,Bitbucket等)

    • 添加将id_rsa.pub文件内容复制到Git提供程序的输入页面(检查您的 Profiles )

  • 0

    我遵循了这里推荐的大部分答案 . 首先我得到以下错误:

    致命:无法访问'https://github.com/folder/sample.git/':schannel:next InitializeSecurityContext failed:未知错误(0x80092012) - 吊销功能无法检查证书的吊销 .

    然后我尝试了@Salim Hamidi的以下命令

    git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
    

    但我收到以下错误:

    致命:无法访问'https://github.com/folder/sample.git/':在CONNECT之后从代理收到HTTP代码407

    如果代理服务器无法验证SSL证书,则可能会发生这种情况 . 因此,我们希望确保ssl验证已关闭(不推荐用于非受信任的站点),因此我完成了以下步骤,这些步骤是@Arpit推荐的,但稍有更改:

    1.首先确保删除任何以前的代理设置:

    git config --global --unset http.proxy
    

    2.然后列出并获取gitconfig内容

    git config --list --show-origin
    

    3.最后更新gitconfig文件的内容,如下所示:

    [http]
    sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
    sslBackend = schannel
    proxy = http://proxyuser:proxypwd@proxy.server.com:8080
    sslverify = false
    [https]
    proxy = http://proxyuser:proxypwd@proxy.server.com:8080
    sslverify = false
    

相关问题