在实验室想git点东东下来,折腾了会,算是基本可用了吧
man git-config 可以看到git支持的代理是依赖别的程序的
这里我使用的是一个别人写的代理小程序,见附件
配置步骤如下:
1. gcc -o connect connect.c
mv connect ~/bin
2. 设置一个wrapper
echo "/home/gigi/bin/connect -H proxy.bupt.edu.cn:8080 $@" >> ~/bin/proxy
chmod +x ~/bin/proxy
这里我使用的是学校的代理 proxy.bupt.edu.cn,端口是8080
connect这个小程序还支持socket代理,用法是connect -S host:port
3. echo "export CONNECT_USER=bergwolf" >> .bashrc
echo "export GIT_PROXY_COMMAND=proxy" >> .bashrc
connect程序从环境变量CONNECT_USER和CONNECT_PASSWORD
中读取用户名和密码,如果密码没有设置,在连接时会要求输入
GIT_PROXY_COMMAND是git默认使用的代理程序,也可以在.git/config中设置
到此git代理设置就完成了,试用一下:
[gigi-Ubuntu:bin]$git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
Initialized empty Git repository in /home/gigi/bin/e2fsprogs/.git/
Enter proxy authentication password for
[email protected]:
remote: Counting objects: 24006, done.
remote: Compressing objects: 100% (4701/4701), done.
ceiving objects: 1% (241/24006), 43.99 KiB | 56 KiB/s
bravo :-)
##############
在只提供http代理的局域网内如何用git连接远程服务器?
git使用了curl,因此设置了curl的代理服务器就可以让git使用代理了,有两种方法:
1. export http_proxy=”10.167.129.20:8080″
2. 编辑配置curl配置文件:~/.curlrc,把代理地址写进去 ##这个不行,会报错,不用写。直接往下走
然后尝试下面几种方法,以下载util-linux-ng为例:
1. git-clone git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
结果:失败,因为这样不是通过http连接(注意开头是git://)。
2. git-clone http://git.kernel.org/?p=utils/util-linux-ng/util-linux-ng.git
结果:连接成功,但是下载了一点就中断。
3. git-clone http://www.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
结果:结果同2。
4. git-clone http://www1.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
结果:成功。
将www改成www1就行了,这应该跟mirroring有关,不使用镜像,直接选择一个真正的服务器,就成功了。 2的失败原因跟3的原因应该是一样的。
要下载linus的kernel tree的话,就可以这样了:
git-clone http://www1.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
原文地址 http://newbupt.org/wForum/disparticle.php?boardName=Linux&ID=20184&start=0&listType=1