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

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

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

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

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

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


person David    schedule 22.10.2013    source источник


Ответы (3)


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

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
person VonC    schedule 22.10.2013
comment
Хотел бы я проголосовать за него несколько раз! Я потратил дни, пытаясь понять эту чертову штуку! Спасибо, мужик! - person Yas Tabasam; 26.03.2014

Что мне нравится делать, так это устанавливать два псевдонима 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

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

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

person thdoan    schedule 09.11.2016

В моем случае я смог отключить запросы git clone, проходящие через прокси-сервер в моих корпоративных настройках, выполнив

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

Согласно документации git, это отключает все запросы к этому удаленному репо с именем origin.

person bimalmampatta    schedule 28.08.2018