Как мне извлечь данные из репозитория Git через HTTP-прокси?

StackOverflow https://stackoverflow.com/questions/128035

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение 3

Что в конце концов сработало, так это установка http_proxy переменная среды.Я установил HTTP_PROXY правильно, но git, очевидно, больше нравится версия со строчными буквами.

Другие советы

Вы также можете установить 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 для формата аутентификации.)

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

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

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

Вот и все!

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

GIT_CURL_VERBOSE=1

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

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

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"

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

git config --global http.proxy http://proxy:8081

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

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

[http]
        proxy = http://proxy.mycompany:80

Это старый вопрос, но если вы используете Windows, рассмотрите возможность установки HTTPS_PROXY, а также при получении данных по URL https.Сработало на меня!

Для меня git:// просто не работает через прокси, хотя https:// работает.Это вызвало некоторую головную боль, потому что я запускал скрипты, которые все использовали git:// поэтому я не мог просто так изменить их все.Однако я нашел этот ДРАГОЦЕННЫЙ КАМЕНЬ

git config --global url."https://github.com/".insteadOf git://github.com/

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

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

В Windows, если вы не хотите вводить свой пароль в .gitconfig обычным текстом, вы можете использовать

Он аутентифицирует вас с помощью обычного или даже Windows NTLM прокси и запускает localhost-proxy без аутентификации.

Для того, чтобы запустить его:

  • Установить Cntml
  • Настройте Cntml в соответствии с документацией для прохождения проверки подлинности вашего прокси-сервера
  • Укажите git на ваш новый прокси localhost:

    [http]
        proxy = http://localhost:3128       # change port as necessary
    

Для меня это сработало следующим образом:

sudo apt-get install socat

Создайте файл внутри вашего $BIN_PATH/gitproxy с помощью:

#!/bin/sh 
_proxy=192.168.192.1 
_proxyport=3128 
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

Не забудьте предоставить ему разрешения на выполнение

chmod a+x gitproxy

Выполните следующие команды для настройки среды:

export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy

Просто чтобы опубликовать это, поскольку это первый результат в Google, это сообщение в блоге, которое я нашел, решает проблему для меня, обновляя сертификаты curl.

http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html

Настройка прокси для git

команда

git config --global http.proxy http://user:password@domain:port

пример

git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080

Для меня это сработало.

git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port

У меня была та же проблема, но с немного другим решением: ВОССТАНОВЛЕНИЕ GIT С ПОДДЕРЖКОЙ HTTP

Тот Самый git: протокол не работал через мой корпоративный брандмауэр.

Например, время ожидания истекло:

git clone git://github.com/miksago/node-websocket-server.git

curl github.com тем не менее, работает просто отлично, так что я знаю свою http_proxy переменная окружения указана правильно.

Я пробовал использовать http, как показано ниже, но сразу же получил сообщение об ошибке.

git clone http://github.com/miksago/node-websocket-server.git

->>>  fatal: Unable to find remote helper for 'http' <<<-

Я попробовал перекомпилировать git следующим образом:

./configure  --with-curl --with-expat

но все равно получил фатальную ошибку.

Наконец, после нескольких разочаровывающих часов, я прочитал файл конфигурации и увидел это:

# Определите CURLDIR=/foo/bar, если ваш заголовок curl и файлы библиотеки находятся в

# каталоги /foo/bar/include и /foo/bar/lib.

Тогда я вспомнил, что не выполнил приказ curl из исходного кода, и так далее ищу заголовочные файлы.Конечно же, они не были установлены.В этом-то и заключалась проблема.Make не жаловался на отсутствующие заголовочные файлы.Итак, Я не осознавал, что --with-curl опция ничего не сделала (фактически это значение по умолчанию в моей версии git).

Я сделал следующее, чтобы исправить это:

  1. Добавлены заголовки, необходимые для make:

    yum install curl-devel
    (expat-devel-1.95.8-8.3.el5_5.3.i386  was already installed).
    
  2. Удалено git От /usr/local (так как я хочу, чтобы новая установка жила там).

    Я просто удалил git* От /usr/local/share и /usr/local/libexec

  3. Выполнен поиск по каталогам include, содержащим curl и expat заголовочные файлы, а затем (потому что я прочитал до конца configure) добавил их в среду следующим образом:

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. Побежал configure со следующими опциями, которые, опять же, были описаны в configure сам файл, а также были значения по умолчанию, но какого черта:

    ./configure  --with-curl --with-expat
    
  5. И теперь http работает с git через мой корпоративный брандмауэр:

    git clone http://github.com/miksago/node-websocket-server.git
    Cloning into 'node-websocket-server'...
    * Couldn't find host github.com in the .netrc file, using defaults
    * About to connect() to proxy proxy.entp.attws.com port 8080
    *   Trying 135.214.40.30... * connected
    ...
    

вы можете использовать:

git config --add http.proxy http://user:password@proxy_host:proxy_port

Установите Git credential.helper в значение wincred.

git config --global credential.helper wincred

Убедитесь, что имеется только 1 учетная запись.helper

git config -l

Если их больше 1 и для них не установлено значение wincred, удалите их.

git config --system --unset credential.helper

Теперь установите прокси-сервер без пароля.

git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80

Убедитесь, что все настройки, которые вы добавили, выглядят правильно....

git config --global -l

Теперь ты можешь идти!

Это не проблема с вашим прокси-сервером.Это проблема с github (или git).У меня это не работает и на git-1.6.0.1 в Linux. Ошибка уже сообщено (вами ни много ни мало).

Обязательно удалите свои чебуреки, они уже есть в Google.Редактировать:Должно быть, тебе приснился сон, я думаю, ты не можешь их удалить.Использование Суть вместо этого?

$http_proxy предназначен для http://github.com....$https_proxy предназначен для https://github.com...

Для Windows

Гото ...> C:/Users/user_name/gitconfig

Обновите файл gitconfig с приведенными ниже подробностями

[http]

[https]

proxy = https://your_proxy:your_port

[http]

proxy = http://your_proxy:your_port

Как проверить свой прокси-сервер и номер порта?

Internet Explorer -> Настройки -> Свойства обозревателя -> Подключения -> Настройки локальной сети

Использование прокси - цепочки

proxychains git pull ...

Обновить: прокси-цепи прекращены, использование прокси-цепочки-ng вместо этого.

Я обошел прокси-сервер, используя https...некоторые прокси-серверы даже не проверяют https.

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\git\meantest>git clone http://github.com/linnovate/mean.git
Cloning into 'mean'...
fatal: unable to access 'http://github.com/linnovate/mean.git/': Failed connect
to github.com:80; No error

c:\git\meantest>git clone https://github.com/linnovate/mean.git
Cloning into 'mean'...
remote: Reusing existing pack: 2587, done.
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (24/24), done.
rRemote: Total 2614 (delta 3), reused 4 (delta 0)eceiving objects:  98% (2562/26

Receiving objects: 100% (2614/2614), 1.76 MiB | 305.00 KiB/s, done.
Resolving deltas: 100% (1166/1166), done.
Checking connectivity... done

Приведенные выше ответы сработали для меня, когда мой прокси-сервер не нуждался в аутентификации.Если вы используете прокси, который требует от вас аутентификации, вы можете попробовать CCProxy.У меня есть небольшое руководство о том, как это настроить, здесь,

http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html

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

Как на это ответили многие, но это только для Винодвы ПОЛЬЗОВАТЕЛЬ, который находится за прокси-сервером с авторизацией.

Повторная установка(первая не удалялась, не удаляйте).

Goto ->
**Windows**
1. msysgit\installer-tmp\etc\gitconfig
    Under [http]
        proxy = http://user:pass@url:port

**Linux**
1. msysgit\installer-tmp\setup-msysgit.sh
      export HTTP_PROXY="http://USER:PASS@proxy.abc.com:8080"

если у вас есть какой-либо специальный символ в использовании user / pass url_encode

как уже указывал @user2188765, попробуйте заменить git:// протокол репозитория с http[s]://.Смотрите также этот ответ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top