1つのGitリポジトリだけでプロキシを使う
リポジトリローカルのHTTPプロキシを設定し、リモートURLに対してGitが選ぶ設定を確認して、不要になったら上書きを削除します。
あるプロジェクトだけ別の接続が必要でも、Gitのグローバルプロキシを設定する必要はありません。既存のチェックアウトには独自のローカル設定があるため、変更をそのリポジトリに限定できます。
以下の例では現在のgit config set/get/unsetコマンドを使います。プロジェクトディレクトリ、リモートURL、文書用IPは置き換え用です。公開プロキシの利用が許される公開リポジトリのテストでは、HTTPプロキシ一覧から候補を選びます。
git -C project config set --local http.proxy http://203.0.113.10:8080
git -C project ls-remote origin
プロキシURLにはトランスポートのスキームを含めます。HTTPSリモートでも、CONNECT対応の通常のHTTPプロキシを使えます。リモートがHTTPSだからといって、プロキシURLをHTTPSに変更する必要はありません。
Gitが実際に選んだ設定を確認する
想定外の結果になったら、実際のリモートURLに対して選ばれる値を調べます。
git -C project config get --show-origin \
--url=https://example.com/team/project.git http.proxy
この照会には実際のHTTPSリモートを使ってください。Gitにはシステム、ユーザー、リポジトリ、コマンドライン、URL別の設定があります。グローバルのhttp.proxy値だけを見ると、より具体的なルールを見落とす場合があります。設定元の出力から、結果を決めたファイルやコマンドラインの指定を特定できます。
ローカル設定は、そのリポジトリからのHTTPアクセスに適用され、特定のブランチだけに適用されるものではありません。HTTPリモートが複数あれば、最初にテストしたもの以外にも使われる場合があります。対象をさらに絞りたいときはURL別のHTTP設定を使えます。
チェックアウトが存在する前
最初のクローンでは、上書きを永続化するか決めます。そのGit呼び出しだけに限定するなら次を使います。
git -c http.proxy=http://203.0.113.10:8080 \
clone https://example.com/team/project.git
コマンドラインの上書きは、新しいチェックアウトの永続設定に自動で書き込まれません。後のfetchでも同じ経路を使うなら、その後でローカル値を設定してください。
SSHリモートは別のケース
git@host:やssh://で始まるリモートはSSHを使います。GitのHTTPプロキシ設定を入れても、HTTP転送に変わるわけではありません。SSH操作がまだ失敗するという理由だけで正常なプロキシIPを替える前に、リモートのトランスポートを確認してください。
ローカルの上書きが不要になったら、そのキーだけを削除します。
git -C project config unset --local http.proxy
削除すると、ほかの設定元にある適用可能な設定が再び有効になります。マシン上のプロキシ設定をすべて消すコマンドではありません。