Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Git: переход с SSH на HTTPS для субмодулей

При обновлении субмодулей через SSH-адреса git@github.com:... может не работать, например если у вас нет SSH-ключа на этой машине. Ниже три способа заменить адрес на HTTPS.

Способ 1: принудительно переводить все запросы Git на HTTPS (рекомендуется, быстрее всего)

Не нужно вручную редактировать файлы конфигурации. Глобальная команда сообщает Git, что адреса вида git@github.com: нужно заменять на https://github.com/.

В терминале выполните:

Bash

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

После этого повторите команду обновления:

Bash

git submodule update --init --recursive

Примечание: если субмодуль находится в приватном репозитории, Git запросит имя пользователя GitHub и пароль (сейчас вместо пароля используется Personal Access Token). Публичные репозитории скачиваются без запроса.


Способ 2: вручную изменить файл .gitmodules

Если нужно постоянно изменить настройки этого проекта, отредактируйте файл .gitmodules в корне репозитория.

  1. Откройте файл в редакторе, например vim или nano:

    Bash

    vim .gitmodules
    
  2. Измените URL:

    Найдите секцию [submodule "policy"] и замените url с SSH-формата на HTTPS.

    До изменения:

    Ini, TOML

    url = git@github.com:shuosha/policy_training.git
    

    После изменения:

    Ini, TOML

    url = https://github.com/shuosha/policy_training.git
    
  3. Синхронизируйте и обновите (обязательный шаг):

    После изменения файла нужно выполнить sync, чтобы Git увидел новый URL, и только потом обновлять субмодули:

    Bash

    git submodule sync
    git submodule update --init --recursive
    

Способ 3: изменить только локальную конфигурацию Git (файлы проекта не меняются)

Если не хотите менять .gitmodules в коде, потому что это попадёт в коммит и затронет других участников, измените только .git/config.

  1. Откройте файл .git/config:

    Bash

    vim .git/config
    
  2. Найдите секцию [submodule "policy"] и измените url на https://github.com/shuosha/policy_training.git.

  3. Сохраните файл и запустите команду обновления.

Итоговая рекомендация

Если вы работаете в контейнере (например, под root), используйте способ 1. Он не требует редактирования файлов и сразу решает проблему для всех субмодулей с такими адресами.

Команда, которую можно скопировать и выполнить, а затем повторить обновление:

Bash

git config --global url."https://github.com/".insteadOf git@github.com: && git submodule update --init --recursive