Попытка что-то вроде 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: // и терпит неудачу. Есть ли способ изменить, как эта команда будет работать или что-то?
git config --global url.https://.insteadOf git://
Ответы:
Если это проблема с вашим брандмауэром, блокирующим порт git: protocol (9418), то вы должны сделать более постоянное изменение, чтобы вам не пришлось забывать выдавать команды, предлагаемые другими постами, для каждого репозитория git.
Приведенное ниже решение также работает только для подмодулей, которые также могут использовать протокол git :.
Поскольку сообщение git на самом деле не указывает сразу на порт 9418, блокирующий брандмауэр, давайте попробуем диагностировать это как реальную проблему.
Диагностика проблемы
Ссылки: https://superuser.com/q/621870/203918 и https://unix.stackexchange.com/q/11756/57414.
Есть несколько инструментов, которые мы можем использовать, чтобы определить, является ли брандмауэр причиной нашей проблемы - используйте тот, который установлен в вашей системе.
Хорошо, теперь мы определили, что наш порт git заблокирован брандмауэром, что мы можем с этим сделать? Читай дальше :)
Основная перезапись URL
Git предоставляет способ переписать URL с помощью
git config
. Просто введите следующую команду:Теперь, как по волшебству, все команды git будут выполнять замену
git://
наhttps://
Какие изменения внесла эта команда?
Взгляните на свою глобальную конфигурацию, используя:
Вы увидите следующую строку в выводе:
Вы можете увидеть, как это выглядит в файле, заглянув
~/.gitconfig
туда, где вы должны увидеть, что были добавлены следующие две строки:Хотите больше контроля?
Просто используйте более полный / конкретный URL в замене. Например, чтобы URL-адреса GitHub использовались только для https: // вместо git: //, вы можете использовать что-то вроде:
Вы можете запустить эту команду несколько раз, используя различные замены. Однако в случае совпадения URL-адреса с несколькими заменами самое длинное совпадение «выигрывает». Для каждого URL будет сделана только одна замена.
Общесистемные изменения для системных администраторов
Если вы системный администратор Linux и не хотите, чтобы ваши пользователи проходили через описанные выше действия, вы можете быстро изменить общесистемную конфигурацию git.
Просто отредактируйте или добавьте следующее содержимое,
/etc/gitconfig
и ваши пользователи не должны беспокоиться ни о чем из вышеперечисленного:источник
git config --global url."https://github".insteadOf git://github
.git config --global --unset url."https://".insteadOf
Github также предоставляет доступ к http (s), который гораздо реже блокируется вашей компанией. Чтобы указать субмодулю использовать это, вы можете сделать это:
Именно поэтому init и update являются отдельными командами - вы можете инициализировать, настраивать расположение, а затем обновлять.
update --init
просто ярлык, когда вам не нужно настраивать любые URL-адреса.Для всех, кто сталкивается с этим, вы можете, конечно, также использовать ssh URL (если ваша компания блокирует git: // но не ssh), но в этом случае OP, по-видимому, не имеет доступа SSH к удаленному репо.
источник
sed -i 's@git://github@https://github@' .git/config
.Другой вариант, который не затрагивает касание git config, - это изменить настройки ssh для использования порта 443 вместо обычного 22 порта.
Справка: Использование SSH через порт HTTPS
Из этой статьи:
После этого я смог успешно сделать толчок к Github. Дома вы можете изменить конфигурацию ssh обратно так, как было, если хотите.
источник
У меня тоже была такая же проблема некоторое время. Затем я попытался изменить конфигурацию git, используя предложенную команду:
что, к сожалению, не помогло мне . У меня все еще была та же проблема!
Что на самом деле решило мою проблему, так это то, что я снова сбросил удаленный URL моего репозитория с помощью следующей команды:
который ранее был таким:
После установки удаленного URL
https://
вместоgit@git.com
меня проблема решилась.источник
Продолжая ответ Натана, вы также можете попробовать протокол ssh, если ваш корпоративный брандмауэр мешает https. В моем случае брандмауэр блокировал протокол git, повторно выдавал ssl-сертификаты для https, и это было для меня бесполезно, даже с отключенной опцией strict-ssl. Вы можете выполнить аналогичную перезапись URL для ssh и создать ключ / пару ssh, как описано на github .
Вы также должны были бы включить ssh-agent для вашей установки git.
источник
потому что адрес GIT для сервера узла изменился, вы должны ввести сейчас:
мерзкий клон https://github.com/joyent/node
удачи
источник
Введение
Я добавлю сюда свой собственный подход ( который не требуется, если у вас есть общедоступный репозиторий git, который поддерживает https ).
Я работаю в компании, где репозиторий git доступен только внутри компании. Но я тоже работаю из дома.
Как я могу отправить в хранилище компании из дома?
Я создал хранилище с папкой на моем диске Google. За исключением git и https, вы можете включать репозитории в качестве путей.
Итак, вместо нажатия на источник я нажимаю на «gDrive». Это приводит к синхронизации папки с моей домашней рабочей станции на диске Google, а затем мой рабочий компьютер извлекает изменения. Кроме того, поскольку иногда файлы в каталоге «.git» не синхронизируются, я временно переименовываю папку, например, из «trunk» в «trunk2». Это приводит к 100% синхронизации домашнего и рабочего компьютеров с Google Drive.
Затем я подключаюсь к своему рабочему компьютеру через удаленную контрольную точку vpn (или teamviewer) и помещаю свои обновления в репозиторий work git.
Кроме того, этот процесс будет работать наоборот для отправки в репозиторий git за пределами заблокированной компании.
источник