`

为Git设置代理

    博客分类:
  • SCM
阅读更多

有两篇文章写的都不错, 这里转载一下.

 

经常有使用SCM下载源码的必要,尤其是软件开发人员。但偶们的网络环境经常逼得我们不得不使用代理,或者是因为速度,或者是因为直连根本就不通。而且源码通常是零零碎碎的几千几万个小文件,不像一般的软件是单个的文件,一个下载工具即可搞定。

1,CVS
CVS使用代理非常麻烦,似乎不能用http代理(如果偶错了请提醒),而socks代理相当难找。好在这个东东已经慢慢变成了昨日黄花,我们不讨论它。

2,SVN
SVN比较方便,编辑~/.subversion/servers文件即可:
[global]
http-proxy-host = <代理的ip或域名>
http-proxy-port = <代理端口>
http-proxy-username = <用户名,如果需要的话>
http-proxy-password = <密码,如果需要的话>

3,HG
HG更简单,因为它使用的是http协议,一个命令解决:
export http_proxy=http://<用户名>:<密码>@<ip>:<端口>

4,Git
Git可以使用两种协议,git协议和http,如果是后者,那么办法跟HG一样,如果是git,比较麻烦,但也不是不可解决:
先去下载一个协议转换小工具:http://www.meadowy.org/~gotoh/ssh/connect.c
编译之:gcc -o connect connect.c
将生成的connect放到可执行文件路径中,如/usr/bin

然后创建一个使用代理的脚本,假设是http-proxy-gw,注意加上可执行属性,内容如下:
#!/bin/sh
# Filename: ~/bin/http-proxy-gw
# This script connects to an HTTP proxy using connect.c
connect -H http://yourproxyaddress:proxyport $@

最后,配置git:
git config --global core.gitproxy "http-proxy-gw for xxx.yyy"
后面的xxx.yyy是域名后缀,比如,下载linux源码就可以是设置为kernel.org

 

 

 

在实验室想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 bergwolf@proxy.bupt.edu.cn:  
remote: Counting objects: 24006, done.
remote: Compressing objects: 100% (4701/4701), done.
ceiving objects:   1% (241/24006), 43.99 KiB | 56 KiB/s  
 
bravo :-)

分享到:
评论
1 楼 laiyangdeli 2011-03-01  
http://www.kernel.org/pub/software/scm/git/docs/git-config.html

core.gitProxy

    A "proxy command" to execute (as command host port) instead of establishing direct connection to the remote server when using the git protocol for fetching. If the variable value is in the "COMMAND for DOMAIN" format, the command is applied only on hostnames ending with the specified domain string. This variable may be set multiple times and is matched in the given order; the first match wins.

    Can be overridden by the GIT_PROXY_COMMAND environment variable (which always applies universally, without the special "for" handling).

    The special string none can be used as the proxy command to specify that no proxy be used for a given domain pattern. This is useful for excluding servers inside a firewall from proxy use, while defaulting to a common proxy for external domains.



# Proxy settings
[core]
        gitProxy="ssh" for "kernel.org"
        gitProxy=default-proxy ; for the rest

相关推荐

    Git命令详解.docx

    "Git 命令详解" Git 是用 C 语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个...* 通过 http 和代理服务器进行远端操作:使用 `git config` 命令设置代理服务器。

    windows_64位系统Git 安装包 版本:Git-2.21.0-64-bit

    这个“Windows 64位系统Git安装包”提供了适用于64位Windows操作系统的Git环境,版本为Git-2.21.0-64-bit。这个版本在发布时是稳定版,意味着它已经经过了充分的测试,适合日常开发使用。 Git的核心功能包括: 1. ...

    搭建基于SSH公钥的Git服务器.docx

    搭建基于SSH公钥的Git服务器 本文将指导您如何搭建基于SSH公钥的Git服务器,包括服务端和客户端的配置。服务端配置包括创建共享账户、搭建空版本仓库、访问授权和限制shell。客户端配置包括安装Git、生成SSH公钥、...

    gitblit-1.9.1

    - **权限管理**:Gitblit允许管理员为不同的用户和团队设置细粒度的访问权限,确保数据安全。它可以控制用户对仓库的读、写和管理权限。 - **邮件通知**:当有新的提交或者其他活动发生时,Gitblit可以自动发送...

    Git权威指南PDF完整版

    4.2 思考:为什么工作区根目录下有一个 .git 目录/ 60 4.3 思考:git config 命令的各参数有何区别/ 63 4.4 思考:是谁完成的提交/ 65 4.5 思考:随意设置提交者姓名,是否太不安全/ 67 4.6 思考:命令别名是干什么...

    Git权威指南.txt

    - 提交者的信息可以通过 `git config user.name` 和 `git config user.email` 设置,确保提交信息的一致性和可追踪性。 - **4.5 命令别名的功能** - Git 支持定义命令别名,简化常用的命令操作。 - **4.6 备份...

    git 简单的向git服务器推送的过程

    在Git版本控制系统中,将本地仓库的改动推送到远程服务器是一项基本操作。...在实际使用中,根据具体的Git服务器设置和团队规范,推送过程可能会略有不同,但基本的`git remote add`和`git push`命令始终是核心。

    Git-2.21.0-64-bit

    用户可以通过运行这个exe文件来安装Git,按照向导设置路径、配置默认编辑器和HTTPS代理等。 在使用过程中,用户可以利用Git进行版本控制,如创建本地仓库(`git init`)、添加文件到仓库(`git add`)、提交更改(`...

    git clone时报错问题解决

    在使用Git进行代码仓库克隆操作时,如果出现“sign_and_send_pubkey: signing failed: agent refused operation”的错误提示,意味着SSH代理拒绝了身份验证的操作。这通常发生在用户尝试通过SSH方式访问Git仓库时,...

    git的配置文件

    如果你需要通过HTTP代理访问Git服务器,可以通过此设置来指定。 8. **全局忽略文件**: ``` [core] excludesfile = ~/.gitignore_global ``` 可以设置一个全局的`.gitignore`文件,这样所有仓库都会自动忽略...

    最新git,版本(2.18.0) 64-bit version of Git for Windows

    安装过程中,用户可以选择自定义配置,如路径设置、默认编辑器、HTTPS代理设置等。 在日常使用中,了解Git的基本操作至关重要,例如: - **初始化仓库**:`git init`用于在本地创建一个新的Git仓库。 - **添加文件...

    Git 的 2.31 版本 安装包 for window.rar

    7. **配置HTTPS传输**:这里可以决定是否使用SSL/TLS证书检查,以及是否使用Git的HTTP代理。 8. **安装**:确认所有设置后,点击“Install”开始安装。 安装完成后,你可以通过命令行或Git Bash启动Git,进行基本...

    Git常用的笔记资源信息

    ### Git常用的笔记资源信息 #### 知识点详解 **一、配置管理** 1. **配置凭证存储方式:** ```plaintext [credential] helper=store--file.git-credentials ``` 这段配置告诉Git如何保存你的用户名和密码等...

    git27and28.rar

    与代理进行交互时,为配置 SSL 提供了新选项 Git 现在已拥有自己内置的 bug 报告工具。此工具用于生成调试信息,如内核和编译器数据以及其他关于 Git 的构建信息,以便帮助分析问题 重构与 GnuPG 交互的代码 许多 ...

    Git学习记录1

    例如,设置SOCKS5代理为`127.0.0.1:1080`,使用以下命令: ``` git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks5://127.0.0.1:1080' ``` - 当你需要取消...

    Git-2.29.2.2-32-bit.rar

    安装过程中,用户可以选择配置选项,如设置Git的默认文本编辑器、选择是否使用SSH协议以及设置HTTPS代理等。此外,Git for Windows还包括一个Git Bash模拟器,提供类似Linux的命令行环境,使得开发者在Windows上也...

    Git安装包64和32都有~~~~~

    7. **HTTPS代理设置**:如果你在使用公司网络,可能需要配置HTTP代理以访问Git仓库。 完成安装后,你可以通过命令行(Git Bash或PowerShell)或图形界面工具(如SourceTree、GitHub Desktop)来使用Git。基本操作...

    字节跳动&lt;Git学习手册&gt;

    64. **删除全局设置**:`git config --global --unset &lt;setting&gt;`。 65. **新建并切换到新分支上,同时这个分支没有任何commit**:`git switch -c &lt;new-branch&gt;`。 66. **展示任意分支某一文件的内容**:`git show ...

    Git-2.35.3-64-bit 安装软件

    4. 开启HTTPS代理:如果网络环境需要使用代理,记得在Git配置中设置HTTP/HTTPS代理,以便于访问远程仓库。 安装完成后,用户可以使用以下常见的Git命令来操作: 1. 初始化仓库:`git init`在当前目录创建一个新的...

    Git 的 HTTP 协议实现 Grack.zip

    它工作在Web服务器后面,如Apache或Nginx,将HTTP请求转换为Git操作。这样,即使在不允许直接使用Git的默认TCP端口(9418)或者SSH协议的网络环境下,用户也能正常地克隆、推送和拉取代码。 Grack的核心功能包括: ...

Global site tag (gtag.js) - Google Analytics