Как вытащить из Git-репозитория через HTTP-прокси? - PullRequest
466 голосов
/ 24 сентября 2008

Примечание: хотя описанный вариант использования касается использования подмодулей в проекте, то же самое относится и к обычному git clone хранилищу по HTTP.

У меня есть проект под контролем Git. Я хотел бы добавить подмодуль:

git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu

Но я получаю

...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'

У меня настроен HTTP_PROXY:

c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80

У меня даже есть глобальная настройка Git для http-прокси:

c:\project> git config --get http.proxy
http://proxy.mycompany:80

Кто-нибудь получал HTTP-выборки для последовательной работы через прокси? Что действительно странно, так это то, что некоторые проекты на GitHub работают нормально (awesome_nested_set, например), но другие постоянно терпят неудачу ( rails , например).

Ответы [ 26 ]

554 голосов
/ 04 августа 2010

Вы также можете установить HTTP-прокси, который Git использует в свойстве глобальной конфигурации http.proxy:

git config --global http.proxy http://proxy.mycompany:80

Для аутентификации через прокси:

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/

(Кредит предоставляется @ EugeneKulabuhov и @ JaimeReynoso для формата аутентификации.)

145 голосов
/ 07 февраля 2013

На этот счет уже есть несколько отличных ответов. Тем не менее, я думал, что скину, так как некоторые прокси-серверы требуют от вас аутентификации с использованием идентификатора пользователя и пароля. Иногда это может быть на домене.

Так, например, если ваша конфигурация прокси-сервера выглядит следующим образом:

Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword

Затем добавьте в файл .gitconfig следующую команду:

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080

Не беспокойся о https. Пока указанный прокси-сервер поддерживает http и https, тогда достаточно одной записи в файле конфигурации.

Затем вы можете убедиться, что команда успешно добавила запись в ваш файл .gitconfig, выполнив cat .gitconfig:

В конце файла вы увидите следующую запись:

[http]
    proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080

Вот и все!

120 голосов
/ 29 декабря 2008

Наконец-то сработала установка переменной окружения http_proxy. Я правильно установил HTTP_PROXY, но git, очевидно, больше нравится строчная версия.

48 голосов
/ 24 сентября 2008

Похоже, вы используете MitW-компиляцию Git для Windows (или, возможно, другую, о которой я не слышал). Есть способы отладки этого: я считаю, что вся работа http-прокси для git выполняется curl. Установите эту переменную окружения перед запуском git:

GIT_CURL_VERBOSE=1

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

27 голосов
/ 24 декабря 2014

Если вы просто хотите использовать прокси в указанном репозитории, не нужно в других репозиториях. Предпочтительным способом является опция -c, --config <key=value>, когда вы git clone хранилище. например,

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"
25 голосов
/ 11 марта 2013

Когда ваша сетевая команда выполняет ssl-проверку путем переписывания сертификатов, затем использование URL-адреса http вместо https-адреса в сочетании с настройкой этой переменной работало для меня.

git config --global http.proxy http://proxy:8081
19 голосов
/ 19 октября 2012

Вы также можете отредактировать файл .gitconfig , расположенный в каталоге% userprofile% в системе Windows ( notepad% userprofile% .gitconfig ) или в каталоге ~ в системе Linux ( vi ~ / .gitconfig ) и добавьте секцию http , как показано ниже.

Содержимое файла .gitconfig:

[http]
        proxy = http://proxy.mycompany:80
16 голосов
/ 19 апреля 2011

Это старый вопрос, но если вы работаете в Windows, подумайте и о настройке HTTPS_PROXY, если вы запрашиваете по URL-адресу https Работал на меня!

15 голосов
/ 23 сентября 2015

Для меня git: // просто не работает через прокси, хотя https: // работает. Это вызвало некоторую головную боль, потому что я запускал скрипты, которые все использовали git: //, поэтому я не мог просто легко изменить их все. Однако я нашел этот GEM

git config --global url."https://github.com/".insteadOf git://github.com/
11 голосов
/ 28 мая 2013

Я не нахожу ни http.proxy, ни GIT_PROXY_COMMAND работы для моего аутентифицированного http прокси. Прокси не запускается ни в каком случае. Но я нахожу способ обойти это.

  1. Установите штопор или другие нужные вам варианты.
  2. Создать файл авторизации. Формат authfile: user_name:password, а user_name, password - ваше имя пользователя и пароль для доступа к вашему прокси. Чтобы создать такой файл, просто запустите команду следующим образом: echo "username:password" > ~/.ssh/authfile.

  3. Отредактируйте ~/.ssh/config и убедитесь, что у него есть разрешение 644: chmod 644 ~/.ssh/config

В качестве примера рассмотрим github.com, добавив следующие строки в ~/.ssh/config:

Host    github.com
        HostName        github.com
        ProxyCommand    /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
        User            git

Теперь, когда вы что-нибудь делаете с git@github.com, он будет автоматически использовать прокси. Вы можете легко сделать то же самое с Bitbucket .

Это не так элегантно, как другие подходы, но работает как шарм.

...