Python プロセスの環境を変えず、グローバルな Git 設定も書かずに、HTTPS のクローン 1 回をプロキシ経由にするには、変数を Repo.clone_from に渡します。

from git import Repo

repo = Repo.clone_from(
    'https://git.example/team/project.git',
    '/path/to/new-checkout',
    env={
        'http_proxy': 'http://proxy.example:8080',
        'https_proxy': 'http://proxy.example:8080',
    },
)

プロキシ URL は Python の文字列に直接書きます。公開リポジトリで、公開プロキシが許可された経路を使う場合、HTTP プロキシ一覧が候補のエンドポイントを提供します。シェルのグループ化用の引用符はその URL の一部ではありません。SSH のリポジトリ URL は SSH トランスポートに従うため、この例には HTTPS のリポジトリ URL が必要です。

Git が別の経路を使う場合

env のマッピングは Git サブプロセスが継承する環境を更新するだけで、その環境を空の環境に置き換えるわけではありません。継承された no_proxy の値で迂回がないか確認し、対応する環境設定を上書きしうる Git 自身の http.proxy 設定も確認してください。

クローンに config を渡す例も見かけます。これは Git clone の --config オプションを呼び出し、新しいリポジトリに設定を書き込みます。設定をこのクローン処理より長く残す必要がある場合にだけ選んでください。クローン時の Git 設定と、呼び出し時だけの設定の違いを説明しています。

関連記事