28

企業のファイアウォールの背後で git を使用しており、http.proxy --global 構成を使用して外部プロジェクトのクローンを作成しています。

私の問題は、イントラネットで http を介して複製したいときに発生します。プロキシ構成がイントラネット要求を妨害していると思われます。

イントラネットを使用する前に設定をリセットできることは知っていますが、それはあまりユーザーフレンドリーではありません。

this answerも見ましたが、既存のリポジトリにのみ適用されるようです。

1 回のコマンド呼び出しに対してのみプロキシの使用を無効にする方法はありますか? この場合、最初のクローン?

4

3 に答える 3

24

私がやりたいのは、2 つの Git エイリアスを設定することです。

~/.gitconfig

[alias]
        noproxy = config --global --remove-section http
        proxy = config --global http.proxy http://127.0.0.1:9666

config --global --unset http.proxyプロキシをリセットするとセクション見出しが残るため、プロキシをリセットしなかったことに注意してください。プロキシ[http]を繰り返し有効化および無効化すると、一連の空のセクション見出し.gitconfigで汚染されます。[http]大したことではありませんが、ただ迷惑です。


企業のファイアウォールの内側など、場合によっては、~/.ssh/config代わりに構成する必要があります。セットアップは少し複雑になります。

~/.gitconfig

[alias]
        noproxy = !sh -c 'cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'cp ~/.ssh/config.proxy ~/.ssh/config'

~/.ssh/config.noproxy

Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

~/.ssh/config.proxy

Host *
  ProxyCommand connect -H 127.0.0.1:9666 %h %p

Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

エイリアスを次のように変更することで、2 つの方法を組み合わせることもできます。

[alias]
        noproxy = !sh -c 'git config --global --remove-section http 2> /dev/null && cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'git config --global http.proxy http://127.0.0.1:9666 && cp ~/.ssh/config.proxy ~/.ssh/config'

これで、入力するだけgit noproxyでプロキシを無効にしgit proxyて有効にすることができます。さらにエイリアスを作成することで、複数のプロキシ間で切り替えることもできます。

于 2016-11-09T14:30:13.067 に答える
3

私の場合、実行することで、企業設定でプロキシを通過する git clone リクエストを無効にすることができました

git config --global --add remote.origin.proxy ""

git ドキュメントによると、これにより、origin という名前のリモート リポジトリへのすべてのリクエストが無効になります。

于 2018-08-28T17:32:07.073 に答える