Git Субмодуль - разрешение отклонено

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

Использовали приведенные ниже команды, но не работайте, пожалуйста, помогите. Как правильно клонировать подмодули в существующем хранилище?

djrecker$ git submodule update --init --recursive
Submodule 'Path' ([email protected]:Path) registered for path 'App'
Cloning into 'Path'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Ответ 1

Я столкнулся с той же проблемой. Проблема была в вашем реестре github, вы можете использовать старый ключ ssh.

Вам нужно обновить текущий ключ ssh.

Steps involved are:

1. vim ~/.ssh/id_rsa.pub
2. copy the ssh key
3. Go to the github settings
4. Select the option ssh keys
5. Remove the old ssh keys not used anymore.
6. Add a new ssh key.
7. Try running the "git submodule update --recursive"

Это сработало для меня!

Ответ 2

У меня была эта проблема. В моем случае открытый ключ (~/.ssh/id_rsa) не был настроен на сервере должным образом.

Убедитесь, что вы получаете все подмодули:

Ссылка: Git update submodule recursive

# This must be called twice. Once for new and once for existing submodules.
git submodule update --init --recursive
git submodule update --recursive

Для диагностики проблем с разрешениями с вашим ключом:

Чтобы проверить детали ваших подмодулей

  • Откройте .gitmodules в корневой папке проекта и убедитесь, что все выглядит хорошо. В соответствии с рекомендациями @VonC попробуйте их клонировать в отдельную папку.
  • Возможно, вы захотите переключить подмодули с использования SSH на HTTPS. Это позволит вам ввести имя пользователя и пароль. Но это может вызвать проблемы с вашими товарищами по команде и автоматизировать сборку. Сначала поговори с ними.

Ответ 3

  • В Windows:

В моем случае он жаловался на ту же проблему, когда я использовал обычную командную строку (Git CMD). Тогда я попробовал с Git Bash и больше никаких проблем.

Ответ 4

Интересно, что в аналогичном случае с использованием HTTPS-ссылки работало для меня.

Ответ 5

В моем случае проблема была вызвана консолью, которая не запрашивала у меня пароль. Решением было изменить консоль с CMDER на Gitbash. Когда я использовал CMDER, он не показывает окно пароля, которое вызвало проблему отказа в доступе.

Ответ 6

Была такая же проблема с подсистемой TortoiseGit/Windows для Linux/GitBash. Решение состоит в том, чтобы использовать аутентификацию через агента (ключ) вместо пароля.

Для TortoiseGit:

  • запустить Pageant
  • добавь свой ключ
  • введите пароль
  • Меню TortoiseGit → обновление субмодуля...

(без показа клона git он запрашивает пароль и работает как задумано, но обновление git завершается с ошибкой)

Для WS4L:

$ eval 'ssh-agent -s'
$ chmod 600 /path/to/key
$ ssh-add /path/to/key

продолжить git submodule update

Ответ 7

Я создал подмодуль по ошибке, используя git init в родительской папке И в ее подпапке. Просто удалил папку .git и начал заново с git init в правильной родительской папке.

Ответ 8

Win10 + git bash терминал в VS Code. В моем случае я использовал git bash через VS Code. При использовании подмодулей в git появляется окно для ввода ключевой фразы для ключа. Bash через VSCode не появится. С помощью пункта контекстного меню Windows "Git Bash Here" в папке репозитория, как показано ниже: Контекстное меню "Захват экрана"

git submodule update

работает великолепно.