2013-04-17 5 views
36

特定のドメインに対してのみプロキシを使用するようにgitを設定することはできますか?特定のgitのURL /ドメインにのみプロキシを使用しますか?

社内のプロキシを使用してGithubにアクセスしたいのですが、内部のgit reposにアクセスするためにはオフにしておきます。

私はbowerを使用しており、ファイアウォールとgithubの両方でアイテムを必要とする必要がありますので、プロジェクトごとの設定として行うことはできません。何らかのグローバル設定オプションが必要です。何かご意見は?

答えて

35

私は通常の環境変数を使用します。

GitHubのレポにアクセスするときにgitによってピックアップされます。

注:

  • http_proxyhttps_proxyの両方がプロキシ(なしhttps://)のhttp:// URLを使用する必要があります。
  • は常に

(その短い名前に依存しない)proxydomainfqn (full qualified name)を使用するが、内部レポのために、私がしなければならないすべては、1つのより多くの環境変数を定義し、エクスポートです:

  • no_proxy=.my.company,localhost,127.0.0.1,::1、アドレスがmyrepo.my.companyまたはlocalhostのいずれかのレポにアクセスします。

NO_PROXYまたはno_proxyを定義できますが、それは問題ではありません。

しかし、念のために、私はいつもHTTP_PROXYHTTPS_PROXYhttp_proxyhttps_proxyNO_PROXYno_proxyを設定します。

+2

私は大好きです。君は!!! – robdodson

+0

私の場合、httpとhttpsの両方で 'http://'を削除しようとするまで動作しませんでした。 –

+0

no_proxyはワイルドマッチに*使用しないでください。代わりに.mycompany.comを使用してください。 –

51

別の可能性を追加するには、を入力します。

git config --global http.proxy http://mydomain\\myusername:[email protected]:proxyport 

しかし、何が本当にすごいのは、あなたがURLあたりセットのHTTP設定をすることができ、starting git1.8.5 (October 2013)です。

http.*」の変数は、構成ごとにが適用されるURLごとに指定できるようになりました。例えば
、その指定されたサイトに話したときに

[http] 
    sslVerify = true 
[http "https://weak.example.com/"] 
    sslVerify = false 

のみオフ http.sslVerifyを反転します。


commit d4770964d5を参照してください:指定のみ<section>

$ git config --bool --get-urlmatch http.sslVerify https://good.example.com 
true 
$ git config --bool --get-urlmatch http.sslVerify https://weak.example.com 
false 

は、指定したURLに適用され、それらの値を持つセクション内のすべての変数のリストを取得することができます。例えば

$ git config --get-urlmatch http https://weak.example.com 
http.sslverify false 

すべての詳細はcommit 6a56993bにあります。

http.<url>.*:: 

HTTPの任意*上記のオプションがいくつかのURLに選択的に適用することができます。

  • スキームhttps://example.com/で例えば、https):URLと一致するように設定キーについて
    は、設定キーの各要素は、次の順序で、URLのそれと比較されます。
  • ホスト/ドメイン名(例:example.comhttps://example.com/)。
  • ポート番号(例えば、8080http://example.com:8080/)。
  • パス(たとえば、repo.githttps://example.com/repo.git)です。
  • ユーザ名(例えば、userhttps://[email protected]/repo.gitで)

上記優先度を減少させることによって、順序付けされたリスト。設定キーのパスと一致するURLは、そのユーザ名と一致するURLよりも優先されます。
たとえば、URLがhttps://[email protected]/foo/barの場合、設定キーの一致がhttps://[email protected]よりも、https://example.com/fooの設定キーの一致が優先されます。

すべてのURLは、一致を試みる前に正規化されています(URLに埋め込まれている場合はパスワード部分は常に一致するため無視されるため、単に異なるスペルの同等のURLが適切に一致します)。

環境変数の設定は常にと一致します。
照合されるURLは、Gitコマンドに直接与えられたものです。
これは、リダイレクトの結果として訪問されたすべてのURL +がマッチングに参加しないことを意味します。 Windowsでは

+0

特定のドメインにプロキシ設定を使わないようにするには、http.proxy = "" ' – imanuelcostigan

+0

を設定する必要があります。* .mycompany.comすべてのサブドメインに一致しますか? – bbodenmiller

+0

これは私のために巨大でした。どうもありがとう! – Artif3x

-1

、単に[パスワードなしのノートは]あなたが遠隔特にそれぞれのさまざまな設定オプションを調整することができ、私

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

git config --global https.proxy http://mydomain\\myusername:@myproxyserver:proxyport 
8

のために働い以下。リモコンが2台あり、それぞれoriginupstreamというリモコンがあるとします。あなたは、それぞれが次の操作を行うためのプロキシを調整します

git config --path remote.origin.proxy http://user:[email protected]_for_origin:8080 
git config --path remote.upstream.proxy http://user:[email protected]_for_upstream:8080 

これはあなたのローカルリポジトリ設定(.git/config)内の各リモートのセクションを変更します。

また、グローバル設定のオプションを調整することもできます。グローバルコンフィグファイル($HOME/.gitconfig)のリモート名を参照するのは意味がないので、のurl-matching(IIRC、Git 1.8.5以降でサポート)を使用できます。例:

[http "https://example.com/repo1.git"] 
    proxy = http://user:[email protected]:8080 
[http "https://example.com/repo2.git"] 
    proxy = http://user:[email protected]:8080 

あなたが設定されているものを見たい場合:

git config --path --get-urlmatch https://example.com/repo1.git 
git config --path --get-urlmatch https://example.com/repo2.git 
18

いくつかは、ここで述べたように、プロキシ設定と一緒にURLを指定することにより、これを行うことができますが、ここでは、ユースケースですこれは私のためにこれを修正した。上記のVonCに感謝します!

以下、私はGitサーバーのルートを指定しています。あなたがクローンしたgit repoの完全なパスは必要ありません。単一のエントリを使用してサーバー全体を管理できます。

.gitconfigファイルに次を追加します。私のWindowsシステムでは、%userprofile%\を使っています。gitconfig

[http] 
    proxy = http://my.proxy.net:8080 
[https] 
    proxy = http://my.proxy.net:8443 
[http "http://my.internalgitserver.com/"] 
    proxy = "" 
+2

ようこそ。 +1。 Windows環境変数 'NO_PROXY'を' my.internalgitserver.com'に設定していると、定義済みのプロキシを使用できないほど十分な可能性があります。http://stackoverflow.com/a/27229920/6309 – VonC

+0

、VonC。私は様々なプロキシツール(git、bower、npm)のためのいくつかのテンプレート設定ファイルを作成し、それらをチームメンバーに渡す状況にあります。あなたがNO_PROXY設定を正しく働いている間は、私の場合は必要ではなかったし、これらをすべて私が配布できる単一のファイルにまとめることのシンプルさは、私が後にしたものです。 – Artif3x

+0

良い点。ファイルを配布する方が環境変数より簡単です。 – VonC

関連する問題