通过http代理,下载git协议的repo

本文详细介绍了如何配置Git通过HTTP代理服务器进行工作,包括对于HTTP和HTTPS协议的简单配置,以及对于Git协议需要安装socat并创建相应脚本进行配置的方法。同时解决了在使用过程中遇到的Squid代理不通过端口9418的问题,通过在Squid配置文件中添加ACL规则来实现。

http://www.vpsee.com/2011/07/how-to-use-git-through-a-http-proxy/

主要参考了这个帖子。


1. 如果是http或者https协议的,那比较简单

export http_proxy="http://proxy_ip_address:port"

export https_proxy="http://proxy_ip_address:port"



2. 如果是git协议的, 那需要安装socat。

编辑如下脚本,


# cat /usr/bin/gitproxy
#!/bin/bash

PROXY=9.186.9.18
PROXYPORT=3128
PROXYAUTH=username:passwd
exec socat STDIO PROXY:$PROXY:$1:$2,proxyport=$PROXYPORT,proxyauth=$PROXYAUTH


在.gitconfig中加如

[core]
    gitproxy = gitproxy


开始还是不行,后来发现是因为squid中不允许git端口 9418通过。

在/etc/squid/squid.conf中添加

acl git port 9418      
http_access allow git


好啦,可以用了哈




在尝试克隆 Git 仓库时遇到 `connection timed out` 错误,通常与网络连接、服务器状态或配置有关。以下是一些可能的解决方法: 1. **检查网络连接** 确保本地网络连接正常。可以尝试访问其他网站或服务以确认网络没有问题。如果使用代理,需要检查代理设置是否正确。 2. **更换协议** 如果使用的是 HTTPS 协议,可以尝试切换为 SSH 协议进行克隆: ```bash git clone git@github.com:username/repository.git ``` 或者,如果使用的是 SSH,可以尝试切换为 HTTPS: ```bash git clone https://github.com/username/repository.git ``` 3. **增加超时限制** Git 默认的超时时间可能较短,可以通过以下命令增加超时时间: ```bash git config --global http.postBuffer 524288000 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 ``` 4. **使用镜像或代理** 如果仓库托管在 GitHub 上,可以尝试使用国内的镜像服务,例如 Gitee 或者华为云镜像。也可以配置 Git 使用代理: ```bash git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks5://127.0.0.1:1080' ``` 5. **检查防火墙或安全软件** 某些防火墙或杀毒软件可能会拦截 Git 的连接请求。可以尝试暂时禁用这些软件,确认是否是它们导致的问题。 6. **使用 Bundle 文件** 如果远程仓库支持,可以请求仓库管理员提供一个 `.bundle` 文件,然后使用以下命令克隆: ```bash git clone repository.bundle -b branch_name repository_directory ``` 这种方式适用于网络受限的环境。 7. **尝试浅层克隆(Shallow Clone)** 如果只需要最近的提交历史,可以使用 `--depth` 参数进行浅层克隆,减少数据传输量: ```bash git clone --depth=1 https://github.com/username/repository.git ``` 8. **检查服务器状态** 如果问题是由于远程仓库服务器(如 GitHub、GitLab)宕机导致的,只能等待服务恢复正常。 9. **使用 `git bundle` 重新打包** 如果本地已有部分克隆的仓库,但无法完成完整克隆,可以尝试使用 `git bundle` 创建一个打包文件: ```bash git bundle create repository.bundle --all ``` 然后通过其他方式传输该文件并进行克隆。 10. **更新 Git 版本** 如果使用的是较旧版本的 Git,可能存在已知的 bug 或兼容性问题。可以尝试更新到最新版本: ```bash # macOS 使用 Homebrew brew upgrade git # Ubuntu sudo apt-get update sudo apt-get upgrade git ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值