Подтвердить что ты не робот

Как временно отключить git http proxy

Я использую git за корпоративным брандмауэром, и я успешно клонирую внешние проекты, используя конфигурацию http.proxy -global.

Моя проблема возникает, когда я хочу клонировать через http в интрасети. Я подозреваю, что конфигурация прокси-сервера вмешивается в запрос интрасети.

Я знаю, что мог reset конфигурацию перед использованием интрасети, но это не очень удобно.

Я также видел этот ответ, но, похоже, он применяется только к существующему репозиторию.

Есть ли способ отключить использование прокси только для одного вызова команды? В этом случае начальный клон?

4b9b3361

Ответ 1

Я всегда устанавливаю:

no_proxy=.mycompany

(export если я нахожусь в Unix или просто set в Windows)

Достаточно обойти прокси-сервер для всех интранет-адресов, заканчивающихся ".mycompany".

См. пример:

Я использую его в своем собственном проекте: .proxy.example:

export http_proxy=http://username:[email protected]:port
export https_proxy=http://username:[email protected]:port
export no_proxy=.company localhost

Ответ 2

Мне нравится делать два Git aliases:

~/.gitconfig

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

Обратите внимание, что я не использовал config --global --unset http.proxy для reset прокси-сервера, потому что это оставляет заголовок раздела [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

Вы можете даже объединить два метода, изменив псевдонимы на это:

[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, чтобы включить его. Вы даже можете переключаться между несколькими прокси, создавая больше псевдонимов.