Git://протокол, заблокированный компанией, как я могу обойти это?

Попытка что-то вроде git clone git://github.com/ry/node.git не будет работать, это приведет к:

Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)

Однако клонирование по HTTP работает нормально. До сих пор я понял, что это проблема с протоколом, но я пытаюсь установить cloud9, которому требуется команда

git submodule update --init --recursive

который пытается использовать протокол git://и не работает. Есть ли способ изменить, как эта команда будет работать или что-то еще?

Ответ 1

Если это проблема с тем, что ваш брандмауэр блокирует порт протокола git: (9418), вы должны сделать более постоянное изменение, поэтому вам не нужно запоминать команды, предлагаемые другими сообщениями для каждого git репо.

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

Поскольку сообщение git на самом деле не указывает сразу на порт 9418 блокировки брандмауэра, попробуйте диагностировать его как актуальную проблему.

Диагностика проблемы

Ссылки: https://superuser.com/q/621870/203918 и https://unix.stackexchange.com/q/11756/57414

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

# Using nmap
# A state of "filtered" against port 9418 (git) means
#   that traffic is being filtered by a firewall
$ nmap github.com -p http,git

Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT     STATE    SERVICE
80/tcp   open     http
9418/tcp filtered git

# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1

# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl  http://github.com:9418
curl: (7) couldn't connect to host

Хорошо, теперь мы определили, что наш git порт блокируется брандмауэром, что мы можем с ним поделать? Читайте дальше:)

Основная переадресация URL-адресов

Git предоставляет способ переписать URL-адреса, используя git config. Просто выполните следующую команду:

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

Теперь, как по волшебству, все команды git будут выполнять замену git:// на https://

Какие изменения сделала эта команда?

Взгляните на свою глобальную конфигурацию, используя:

git config --list

На выходе вы увидите следующую строку:

url.https://.insteadof=git://

Вы можете увидеть, как это выглядит в файле, заглянув в ~/.gitconfig, где вы должны увидеть, что добавлены следующие две строки:

[url "https://"]
    insteadOf = git://

Хотите получить больше контроля?

Просто используйте более полный/конкретный URL-адрес в замене. Например, чтобы только URL-адреса GitHub использовали https://вместо git://, вы могли бы использовать что-то вроде:

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

Вы можете выполнить эту команду несколько раз, используя различные замены. Однако, если URL-адрес соответствует нескольким заменам, самое длинное совпадение "выигрывает". Только одна замена будет сделана для каждого URL.

Общесистемные изменения для системных администраторов

Если вы являетесь системным администратором Linux, и вы не хотите, чтобы ваши пользователи могли преодолеть указанные выше проблемы, вы можете быстро изменить конфигурацию системы git.

Просто отредактируйте или добавьте следующее содержимое в /etc/gitconfig, и ваши пользователи не должны беспокоиться об этом:

[url "https://"]
    insteadOf = git://

Ответ 2

Github также предоставляет доступ к http (-ам), который гораздо менее вероятен для вашей компании. Чтобы рассказать субмодулю об этом, вы можете сделать это:

git submodule init
git config submodule.<name>.url https://github.com/...
git submodule update

На самом деле именно поэтому init и update являются отдельными командами - вы можете инициализировать, настраивать местоположения, а затем обновлять. update --init - это просто ярлык, когда вам не нужно настраивать URL-адреса.

Для всех, кто случится через это, вы, конечно же, можете использовать URL-адрес ssh (если ваша компания блокирует git://, но не ssh), но в этом случае OP, по-видимому, не имеет доступа к SSH для дистанционное репо.

Ответ 3

Другой вариант, который не касается касания git config, заключается в изменении настроек ssh для использования порта 443 вместо обычного 22 порта.

Ссылка: Использование SSH через порт HTTPS

Из этой статьи:

edit the file at ~/.ssh/config, and add this section:

Host github.com
   Hostname ssh.github.com   
   Port 443

Впоследствии я смог успешно git нажать на Github. Дома вы можете изменить конфигурацию ssh так, как вам нужно.

Ответ 4

У меня тоже была такая же проблема. Затем я попытался изменить конфигурацию git, используя предложенную команду:

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

, который, к сожалению, не помогло. У меня была такая же проблема!

Наконец-то я решил, что у меня есть reset удаленный URL-адрес моего репозитория, используя следующую команду:

git remote set-url origin https://github.com/<my_user_name>/<my_repo_name>.git

который ранее был таким:

git remote set-url origin [email protected]:<my_user_name>/<my_repo_name>.git

После установки удаленного URL с помощью https:// вместо [email protected] проблема была решена для меня.

Ответ 5

Развернув ответ Nathan выше, вы также можете попробовать ssh-протокол, если ваш корпоративный брандмауэр мешает https. В моем случае брандмауэр блокировал протокол git, повторно выдавал ssl-сертификаты для https, и это меня ломало для меня, даже если опция strict-ssl отключена. Вы можете сделать аналогичную переработку url для ssh и создать ssh key/pair как описано в github.

 git config --global url."ssh://[email protected]".insteadOf git://github.com

Вы также должны включить ssh-agent для установки git.

Ответ 6

потому что адрес GIT для сервера node изменился, вам нужно войти сейчас:

git clone https://github.com/joyent/node

удача

Ответ 7

Введение

Я добавлю здесь свой собственный подход (, который не требуется, если у вас есть общедоступный репозиторий w20, поддерживающий https).

Я работаю в компании, где репозиторий git доступен только изнутри компании. Но я также работаю из дома.

Как я могу нажать на репозиторий компании из дома?

Я создал репозиторий с папкой на моем диске Google. За исключением git и https, вы можете включать репозитории в виде путей.

введите описание изображения здесь

Итак, вместо того, чтобы нажать на начало координат, я нажимаю на "gDrive". Это приводит к тому, что папка синхронизируется с моей домашней рабочей станции на Google Диске, а затем мой рабочий компьютер извлекает изменения. Кроме того, поскольку иногда файлы в каталоге ".git" не синхронизируются, я временно переименовываю папку из, например. "trunk" - "trunk2". Это заставляет как домашние, так и рабочие компьютеры быть на 100% синхронизированы с приложением Google.

Затем я подключился к своему рабочему компьютеру либо через checkpoint-vpn remote (или teamviewer), и нажимаю мои обновления в репозиторий git.

Кроме того, процесс будет работать наоборот для перехода в репозиторий git за пределами заблокированной компании.

  • Нажмите с рабочей станции git repo в папку на диске Google.
  • Настройте 100% -ную синхронизацию, временно переименовав каталог проекта в gDrive.
  • Доступ к домашнему компьютеру через какие-то удаленные и push-изменения.