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

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

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

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

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

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

3 ответов


Я всегда ставил:

no_proxy=.mycompany

(export Если я на Unix, или простой set в Windows)

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

см. пример:

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

export http_proxy=http://username:userpassword@server.company:port
export https_proxy=http://username:userpassword@server.company:port
export no_proxy=.company localhost

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


в некоторых случаях, как за корпоративными брандмауэрами, вам чтобы настроить . Настройка становится немного сложнее:

~/.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.прокси

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


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

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

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