HTTPプロキシを介してGitリポジトリからプルするにはどうすればよいですか?


491

注:説明されているユースケースはプロジェクト内のサブモジュールの使用に関するものgit cloneですが、HTTPを介した通常のリポジトリにも同じことが当てはまります。

Gitの管理下にあるプロジェクトがあります。サブモジュールを追加したい:

git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu

しかし、私は得る

...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'

HTTP_PROXYをセットアップしました。

c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80

httpプロキシのグローバルGit設定もあります。

c:\project> git config --get http.proxy
http://proxy.mycompany:80

誰かが常にプロキシを介して動作するようにHTTPフェッチを取得していますか?本当に奇妙なのは、GitHub上のいくつかのプロジェクトは(awesome_nested_setたとえば)正常に動作しますが、他のプロジェクトは常に失敗する(たとえば、rails)ことです。


プロキシが一部の単語または何かを検閲して、バイトストリームの一部としてそれらの単語が偶然に表示されるリポジトリにのみ影響を与える可能性がありますか?
pjz 2008


4
@ alvaro、gitをプロキシサーバーで動作させることは、この質問の複製の可能性があることを意味すると思います。この質問は、あなたが参照する質問よりも古いものです。
Derek Mahar、2015

2
@James、プロキシサーバーの「グローバル」Git設定は実際にはグローバルではなく、ローカルです。グローバルになるには、に引数--globalを指定する必要がありますgit config
Derek Mahar、2015

1
@DerekMahar新しい質問の方が品質が高い(またはより一般的に適用できる)場合、古い質問は新しい質問の重複で閉じられることがあります。
Raedwald 2017

回答:


584

Gitがグローバル構成プロパティで使用するHTTPプロキシを設定することもできますhttp.proxy

git config --global http.proxy http://proxy.mycompany:80

プロキシで認証するには:

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/

(クレジットは、認証形式について@EugeneKulabuhovおよび@JaimeReynosoに送られます。)


8
これは私にとってうまくいきました:ユーザーの環境でHTTP_PROXYを設定し(Windowsの場合)、次に上記のコメントに$ HTTP_PROXY(大文字)を付けます。このソリューションの+1。
Sean Aitken

4
CleverCoder、Windowsでは、$ HTTP_PROXYではなく%HTTP_PROXY%を指定する必要があります(もちろん、Cygwinを実行している場合を除きます)。Unix環境ではなくWindowsで動作するように回答を編集します。
Derek Mahar、2011

7
プロキシのユーザー名とパスワードはどこに置くのですか?
Duna 2013年

26
使用しgit config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080たユーザー名/パスワードを提供するための構文
ユージンKulabuhov

2
プロキシで問題が発生している可能性がある場合は、http:// <UserID>:<Password> @ <ProxyURL>:<Port> /がうまくいきました
Jaime Reynoso

146

これについてはすでにいくつかの素晴らしい答えがあります。ただし、一部のプロキシサーバーではユーザーIDとパスワードを使用して認証する必要があるため、チップを入れようと思いました。時々これはドメインにある場合があります。

したがって、たとえば、プロキシサーバーの構成が次のようになっているとします。

Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword

次に、.gitconfig次のコマンドを使用してファイルに追加します。

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080

心配しないでくださいhttps。指定されたプロキシサーバーがhttpとhttpsをサポートしている限り、構成ファイルの1つのエントリで十分です。

その後、次のようにして、コマンドが.gitconfigファイルにエントリを正常に追加したことを確認できますcat .gitconfig

ファイルの最後に、次のようなエントリが表示されます。

[http]
    proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080

それでおしまい!


面白い。「デルタの解決」の部分を100%で取得できますが、クローンプロセスがハングしたように見えます。誰もがそれを経験しましたか?
ローマ

1
+1。そしてすぐに、URLごとにプロキシを設定
VonC

@apoplexy提案された編集についてコメントしていただけますか。検討できるようにしています
Max MacLeod

3
ユーザー名またはパスワードに@記号がある場合は、URLエンコードして%40機能します。
Adarsha

3
cat .gitconfigの代わりに、git config --list
user3969377

125

最終的に機能したのは、http_proxy環境変数を設定することでした。私はHTTP_PROXY正しく設定しましたが、gitは小文字バージョンの方が好きです。


3
設定していhttp.proxyグローバルGitの構成作業に?あなたの質問でhttp.proxyは、ローカルリポジトリ設定で設定しました。
Derek Mahar、2011

22
私の場合は、設定する必要がありましたhttps_proxy
M・スミス

1
https.proxy私はgithubでhttpsを使用していたので、私にとっては
うまくいくようでした

3
@MSmithこれを設定https_proxyする必要がある場合httpsは、httpどの質問についてではなく使用していたことを意味します。
Piotr Dobrogost

3
Curlとlibcurlは大文字のHTTP_PROXYとHTTPS_PROXYを認識しません。詳細については、このリンクを参照してください:curl.haxx.se/mail/archive-2001-12/0034.html
Doug

49

あなたはWindows上でGitのmingwコンパイルを使用しているようです(またはおそらく私が聞いたことのない別のもの)。これをデバッグする方法はいくつかあります:gitのすべてのhttpプロキシ作業はcurlによって行われると思います。gitを実行する前に、この環境変数を設定します。

GIT_CURL_VERBOSE=1

これにより、少なくとも裏で何が起こっているのかがわかるはずです。


7
この環境変数を追加しても、msysgitは何も出力しません。:(
アンドリューアーノット

しばらくプロキシと戦った後、このヒントは、curlの証明書データベースが見つからない、または混乱していることを知るのに役立ちました。そのため、リクエストが失敗しました。
davenpcj 2013

これをしばらく探していました。ありがとう。
Mスミス

40

特定のリポジトリでプロキシを使用したいだけの場合は、他のリポジトリは必要ありません。リポジトリの-c, --config <key=value>場合は、オプションが推奨されgit cloneます。例えば

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"

これは奇妙です。$ http_proxyを設定しようとしましたが、gitはそれを尊重しませんでした。それはそれ自身の設定のみを気にするように見えます...
weberc2

動作します。--config複数回指定することもできますhttps.proxy。たとえば、も設定したい場合などです。
barfuin 2015年

ありがとう!まさに私が探していたもの
Boyang

2
プロキシ構成で複製しますが、ユーザーのプロキシ構成は変更しません。まさに私が必要なもの!THX。
運命

26

ネットワークチームが証明書を書き換えてssl-inspectionを行う場合、httpsの代わりにhttp urlを使用し、この変数の設定と組み合わせることでうまくいきました。

git config --global http.proxy http://proxy:8081

2
これを環境に追加して、ネットワーク担当者がトラフィックを検査するために提供する書き換えられた証明書を受け入れることもできます。export GIT_SSL_NO_VERIFY = true
bbaassssiiee

私のために完全に働いた。ありがとう。私はgit config --global http.proxy proxy:8081を追加する必要がありました git config --global https.proxy proxy:8081
Sid

シンプルで迅速なソリューション、この答えの+1。
WALKER 2015年

1
@ sethbc、@ datasmidに感謝します!デバッグするにはGIT_CURL_VERBOSE = 1が必要で、検証をスキップするにはGIT_SSL_NO_VERIFY = trueが必要でした。
Henry Rivera、

私と一緒に働いていない。GIT_SSL_NO_VERIFY変数を使用していない場合も
keinabel

20

Windowsシステムの%userprofile%ディレクトリ(メモ帳%userprofile%.gitconfig)またはLinuxシステムの〜ディレクトリ(vi〜/ .gitconfig)にある.gitconfigファイルを編集することもできます。のhttpセクションを追加し、以下のよう。

.gitconfigファイルの内容:

[http]
        proxy = http://proxy.mycompany:80

20

私にとってgit://は、https://は機能しますが、プロキシ経由では機能しません。私はすべてgit://を使用するスクリプトを実行していたため、簡単にすべてを変更することができなかったため、これは少し頭痛の種となりました。しかし、このGEMを見つけました

git config --global url."https://github.com/".insteadOf git://github.com/

ありがとう、これは大いに役立った
dgrat

私もgit://からプルするのに問題があったことを知っています。SSHキーの問題を検討しましたか?私の問題は、SSHキーの構成が不適切なためでした。
avazula

17

これは古い質問ですが、Windowsを使用している場合、https URL経由で取得する場合はHTTPS_PROXYの設定も検討してください。私のために働いた!


2
https_proxy私の場合(Windows XPではmsysgit)、環境変数を単独で設定するだけで(git globalまたはrepoプロキシオプションを設定しない)十分でした。
Piotr Dobrogost

13

認証済みのhttpプロキシが見つからない、http.proxyまたはGIT_PROXY_COMMAND機能しません。プロキシはどちらの方法でもトリガーされません。しかし、私はこれを回避する方法を見つけます。

  1. corkscrewまたはその他の必要な代替物をインストールします。
  2. authfileを作成します。形式はauthfile次のとおりですuser_name:password、そしてuser_namepasswordあなたのプロキシにアクセスするには、ユーザー名とパスワードです。このようなファイルを作成するには、次のようなコマンドを実行します。echo "username:password" > ~/.ssh/authfile

  3. 編集して~/.ssh/config、その権限が644次のとおりであることを確認します。chmod 644 ~/.ssh/config

例としてgithub.comを取り上げ、次の行をに追加します~/.ssh/config

Host    github.com
        HostName        github.com
        ProxyCommand    /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
        User            git

これでgit@github.com、で何かをするたびに、プロキシが自動的に使用されます。Bitbucketにも同じことを簡単に行うことができます。

これは他のアプローチほどエレガントではありませんが、魅力のように機能します。


1
手順2の「authfileを作成する」について詳しく教えてください。あなたのアプローチはgit:// urlsで機能する唯一のもののようです。
nik 2013年

@NikBagdon手順2に詳細を追加しました。不明な点がある場合は
お知らせください

11

Windowsでは、パスワードを.gitconfigにプレーンテキストで入力したくない場合は、

通常またはWindows NTLMプロキシに対して認証され、認証なしでlocalhost-proxyを起動します。

それを実行させるために:

  • Cntmlをインストールする
  • ドキュメントに従ってCntmlを構成し、プロキシ認証に合格する
  • gitに新しいlocalhostプロキシを指定します。

    [http]
        proxy = http://localhost:3128       # change port as necessary
    

2
それは価値があるもののために、これは受け入れられた答えであるはずでした、彼は窓にいます。透過プロキシはありません(そうでない場合、問題はありません
。– booyaa

9

私にとってそれが機能したのは:

sudo apt-get install socat

$ BIN_PATH / gitproxy内にファイルを作成します。

#!/bin/sh 
_proxy=192.168.192.1 
_proxyport=3128 
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

実行権限を与えることを忘れないでください

chmod a+x gitproxy

次のコマンドを実行して環境をセットアップします。

export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy

1
:説明と(ミニ)スクリプトの更新と要旨へのリンクへのリンクemilsit.net/blog/archives/...
カール・リヒター

この回答は、git://httpsをサポートしていない(まれな)gitサーバーのプロトコルURLで機能する唯一の回答です。また、適切なバッチファイルとウィンドウのsocatを使用して、ウィンドウで動作します。
davenpcj 2016年

8

プロキシをgitに設定

コマンド

git config --global http.proxy http://user:password@domain:port

git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080

7

Git credential.helperをwincredに設定します。

git config --global credential.helper wincred

credential.helperが1つだけであることを確認してください

git config -l

1つ以上あり、wincredに設定されていない場合は、それを削除します。

git config --system --unset credential.helper

次に、パスワードなしでプロキシを設定します。

git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80

追加したすべての設定が適切であることを確認します。

git config --global -l

これで準備完了です。


6

私は同じ問題を抱えていましたが、修正は少し異なりました: HTTPサポート付きのGITの再構築

このgit:プロトコルは、企業のファイアウォールでは機能しませんでした。

たとえば、これはタイムアウトしました:

git clone git://github.com/miksago/node-websocket-server.git

curl github.comただし、問題なく動作するので、http_proxy環境変数が正しいことがわかります。

http以下のようにを使用しようとしましたが、すぐにエラーが発生しました。

git clone http://github.com/miksago/node-websocket-server.git

->>>  fatal: Unable to find remote helper for 'http' <<<-

私はそのようにgitを再コンパイルしてみました:

./configure  --with-curl --with-expat

しかし、それでも致命的なエラーが発生しました。

最後に、イライラする数時間の後、私は設定ファイルを読んで、これを見ました:

#curlヘッダーとライブラリファイルがある場合は、CURLDIR = / foo / barを定義します

#/ foo / bar / includeおよび/ foo / bar / libディレクトリ。

そのとき、私はcurlソースからコンパイルしていなかったので、ヘッダーファイルを探していたことを思い出しました。案の定、インストールされていません。それが問題でした。makeは欠落しているヘッダーファイルについて文句を言わなかった。だから私は--with-curlオプションが何もしなかったことに気付きませんでした(実際、私のバージョンのデフォルトです)git)。

私はそれを修正するために次のことをしました:

  1. makeに必要なヘッダーを追加しました:

    yum install curl-devel
    (expat-devel-1.95.8-8.3.el5_5.3.i386  was already installed).
    
  2. gitから削除しました/usr/local(新しいインストールをそこに常駐させたいため)。

    私は単に削除git*から/usr/local/share/usr/local/libexec

  3. curlおよびexpatヘッダーファイルを含むインクルードディレクトリを検索し、(私が読んだためconfigure)これらを次のように環境に追加しました。

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. configure、再び、で説明した次のオプション、とconfigureもデフォルトが、一体何をファイル自体、およびありました。

    ./configure  --with-curl --with-expat
    
  5. そして今、私の企業ファイアウォールhttpgit介して動作します:

    git clone http://github.com/miksago/node-websocket-server.git
    Cloning into 'node-websocket-server'...
    * Couldn't find host github.com in the .netrc file, using defaults
    * About to connect() to proxy proxy.entp.attws.com port 8080
    *   Trying 135.214.40.30... * connected
    ...
    

gitプロトコルがsquidプロキシで処理されていないことに気づかなかったので、これを進めてもらえませんか
rupert160



3

あなたは使うことができます:

git config --add http.proxy http://user:password@proxy_host:proxy_port


2

Windowsの場合

移動-> C:/ Users / user_name / gitconfig

以下の詳細でgitconfigファイルを更新します

[http]

[https]

proxy = https://your_proxy:your_port

[http]

proxy = http://your_proxy:your_port

プロキシとポート番号を確認する方法は?

Internet Explorer->設定->インターネットオプション->接続-> LAN設定


2

以下の方法は私にとってはうまくいきます:

echo 'export http_proxy=http://username:password@roxy_host:port/' >> ~/.bash_profile
echo 'export https_proxy=http://username:password@roxy_host:port' >> ~/.bash_profile
  • Zshに関する注意:〜/ .bash_profileの代わりに〜/ .zshenvファイルを変更してください。
  • UbuntuとFedoraの注:〜/ .bash_profileではなく〜/ .bashrcファイルを変更してください。

2

注目に値する:ネット上のほとんどの例は、次のような例を示しています

git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port

つまり、プロキシが認証を必要とする場合は、、git-configに会社のパスワードを残すがあるようです。それは本当にクールではありません。

ただし、パスワードなしでユーザーを構成する場合:

git config --global http.proxy proxy_user@proxy_ip:proxy_port

Gitは(少なくともクレデンシャルヘルパーのない私のWindowsマシンでは)それを認識しているようで、リポジトリへのアクセス時にプロキシパスワードの入力を求めます。


あなたは私の男です。私のsso会社のユーザー名とパスワードには非常に多くの特別な記号があり、エンコードして取得することは非常に不可能です。この「エスカモテージ」を使用して、プロキシー・アドレスを設定した後、クローンの顔またはその他の次のステップでパスワードを提供することができました。
カーマインタンバスシア

1

これはプロキシの問題ではありません。github(またはgit)の問題です。Linuxのgit-1.6.0.1でも失敗します。 バグはすでに報告されています(あなたが少なくありません)。

ペーストは必ず削除してください。ペーストはすでにグーグル上にあります。編集:夢見てきたに違いない、私はそれらを削除することはできないと思います。代わりにGistを使用しますか?


私はgithubとmsysGitに投稿しただけでなく、問題がどこにあるのかわかりませんでした。残念ながら、ペーストリーを削除できないようです。
ジェームズA.ローゼン


1

上記の回答は、プロキシが認証を必要としない場合に役立ちました。認証が必要なプロキシを使用している場合は、CCProxyを試すことができます。ここに設定する方法に関する小さなチュートリアルがあります。

http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html

プッシュ、プル、新しいリポジトリの作成ができました。すべてうまくいきました。私と同じようにGitの問題に直面している場合は、新しいバージョンを完全にアンインストールしてから再インストールしてください。


1

@ user2188765がすでに指摘したようgit://に、リポジトリのプロトコルをに置き換えてみてくださいhttp[s]://この回答もご覧ください


0

httpsを使用してプロキシを回避しました...一部のプロキシはhttpsもチェックしません。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\git\meantest>git clone http://github.com/linnovate/mean.git
Cloning into 'mean'...
fatal: unable to access 'http://github.com/linnovate/mean.git/': Failed connect
to github.com:80; No error

c:\git\meantest>git clone https://github.com/linnovate/mean.git
Cloning into 'mean'...
remote: Reusing existing pack: 2587, done.
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (24/24), done.
rRemote: Total 2614 (delta 3), reused 4 (delta 0)eceiving objects:  98% (2562/26

Receiving objects: 100% (2614/2614), 1.76 MiB | 305.00 KiB/s, done.
Resolving deltas: 100% (1166/1166), done.
Checking connectivity... done

0

これは多くの人から回答されましたが、これは認証付きプロキシの背後にいるWinodws USERのためのものです

再インストール(最初の失敗、削除しないでください)。

Goto ->
**Windows**
1. msysgit\installer-tmp\etc\gitconfig
    Under [http]
        proxy = http://user:pass@url:port

**Linux**
1. msysgit\installer-tmp\setup-msysgit.sh
      export HTTP_PROXY="http://USER:PASS@proxy.abc.com:8080"

ユーザー/パスに特別な文字がある場合は、url_encodeを使用してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.