9

Я только что потерял кучу репозиториев со своего диска, поэтому я их клонировал из GitHub. Теперь они запрашивают имя пользователя и пароль каждый раз, когда я что-то отправляю на GitHub. Те, которые не были удалены, не делают этого.
Единственное решение, которое я прочитал для избавления от приглашения имени пользователя / пароля, - это создание ключа ssh. Дело в том, что у меня уже есть ключ, иначе я не смог бы нажать без подсказок в тех репозиториях, которые я не клонировал.

Я посмотрел на git config для двух моих репозиториев: один, который я могу отправить без пароля, и один, который я клонировал. Единственная разница была в branch.master.remote и branch.master.merge , которые я сбросил, делая git config одинаковым. Но подсказка все еще там.

Я даже не уверен, что генерация нового ключа SSH будет работать. Какие у меня варианты?

1 ответ1

22

Моя догадка:

В ваших старых репозиториях использовались удаленные SSH (git@github.com: или ssh://git@github.com/ ), в которых использовалась аутентификация с открытым ключом. (На самом деле, сервер Github SSH никогда не запрашивает пароль.)

В ваших новых репозиториях используются HTTP-пульты (https://username@github.com/), которые поддерживают только базовую аутентификацию HTTP на основе пароля и не используют ваши ключи SSH.

Измените удаленные URL-адреса, чтобы снова использовать SSH. Для этого используйте git remote set-url или отредактируйте .git/config . замещать

https://username@github.com/username/repo.git

просто

git@github.com:username/repo.git

У вас даже может быть запись в ~/.gitconfig которая говорит git переводить удаленные URL из HTTP или Git в SSH.

Таким образом, если ваш репозиторий настроен для удаленного HTTP или Git, git будет игнорировать этот параметр при нажатии и вместо этого будет использовать SSH.

[url "git@github.com:"]
    pushInsteadOf = git://github.com/
    pushInsteadOf = https://github.com/

(insteadOf = также возможна для отмены как вытягивания, так и толкания.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .