Windows下git使用代理服務器的設置方法

在我朝獨有的無敵GFW關照下(當然,也有可能IP被網站封了),要下載網絡上開源的軟件是非常困難的一件事情,在這種情況下,使用VPN或者代理服務器就非常有必要了。對於單個應用翻牆來說,個人比較喜歡用翻牆代理。

SVN中,使用TortoiseSVN來進行版本控制時,設置代理非常簡單,只需要在設置裏面添加代理的信息即可。而 git 在GUI(v0.17.GITGUI)中卻無法找到類似的設置,只能求助 git bash 來設置。

Git支持四種協議 1 ,而除本地傳輸外,還有:git://, ssh://, 基於HTTP協議,這些協議又被分爲啞協議(HTTP協議)和智能傳輸協議。對於這些協議,要使用代理的設置也有些差異:

  1. 使用 git協議 時,設置代理需要配置 core.gitproxy
  2. 使用 HTTP協議 時,設置代理需要配置 http.proxy
  3. 而是用 ssh協議 時,代理需要配置ssh的 ProxyCommand 參數

由於個人需求僅僅是HTTP的代理(相對來說,HTTP有比較好的通適性,Windows配置git/ssh比較棘手),設置的時候,只需要針對單個設置 http.proxy 即可,在需要使用代理的項目下面使用 git bash 如下命令進行設置 ——你的Uri和port可能和我的不同,你懂的。:

git config http.proxy http://127.0.0.1:8088  # 也可以是uri:port形式

這個是不需要鑑權的代理設置,如果需要鑑權,可能需要添加用戶名密碼信息:

git config http.proxy http://username:[email protected]:8088

如果git的所有項目都需要啓用代理,那麼可以直接啓用全局設置:

git config --global http.proxy http://127.0.0.1:8088

爲了確認是否已經設置成功,可以使用 --get 來獲取:

git config --get --global http.proxy

這樣可以看到你設置在global的 http.proxy 值。 

需要修改的時候,再次按照上面的方法設置即可,git默認會覆蓋原有的配置值。

當我們的網絡出現變更時,可能需要刪除掉原有的代理配置,此時需要使用 --unset 來進行配置:

git config --global --unset http.proxy

在命令之後,指定位置的設置值將會被清空,你可以再次使用 --get 來查看具體的設置情況。

如果使用了HTTPS,肯呢個會碰到HTTPS 證書錯誤的情況,比如提示: SSL certificate problem 。。。,此時,可以嘗試將 sslVerify 設置爲 false :

git config --global http.sslVerify false

恩,到此,可以試試git來獲取/更改項目了,此時,項目應該是使用代理來進行通訊的。

後記:

  1. 如果非必要,一般不使用 --global 的方式來設置代理,畢竟代理有的時候訪問一些項目比直接訪問還慢,特別是當代理在國外,項目源在國內的時候,按需使用纔是王道。
  2. 不要多次使用不同的參數來設置代理,一般使用文中兩種方式酌情選用即可, --global , --system , --local 各級設置後,可能會給自己帶來不必要的麻煩。git默認是先到git Repository的配置文件中查找配置文件,如果沒有纔會到 --global 設置的文件中查找,因此,單個項目文件中的設置會覆蓋 --global 的設置。
  3. 使用 --global 來配置的信息保存在當前用戶的根目錄下的 .config 文件中,而倉庫中的配置保存在項目倉庫的根目錄下的 .git/config 文件中。
  4. 如果是Linux的用戶,再使用 git/ssh協議 時,根據網上的說法,需要使用 connect

    工具來做代理的轉換。—— 本人Linux下的暫時沒有配置git使用代理,暫時無法驗證,摘錄方法如下:

    GIT協議配置:安裝完畢 connect 之後,你可以在特定的目錄中建立一個 socks5_proxy_wrapper (或其他的文件名亦可),然後文件內容改爲:

    #!/bin/sh
    connect -S 127.0.0.1:8088 "$@"

    而後即可以配置git了,設置 gitproxy :

    git config core.gitproxy /path/to/socks5_proxy_wrapper
    
    # 路徑要改

    抑或 export GIT_PROXY_COMMAND :

    export GIT_PROXY_COMMAND="/path/to/socks5_proxy_wrapper"

    SSH協議配置,同樣需要建立一個文件,假設命名爲: socks5_proxy_ssh ,文件內容爲:

    #!/bin/sh
    ssh -o ProxyCommand="/path/to/socks5_proxy_wrapper %h %p" "$@"

    配置git使用該文件:

    export GIT_SSH="/path/to/socks5_proxy_ssh"

    亦可配置" ~/.ssh/config "中的 ProxyCommand 。

    HTTP協議配置,這裏直接使用 http.proxy 設置成 socks5 即可:

    git config http.proxy socks5://127.0.0.1:8088

    如果要全部使用HTTP代理,可以將上面的 socks5_proxy_wrapper 文件設置爲:

    #!/bin/sh
    connect -H 192.168.1.100:8080 "$@"

    其他保持不變即可。而 http.proxy 設置同本文設置即可.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章