Как я могу убедиться, что Git не запрашивает у меня имя пользователя и пароль GitHub?

196941
picardo

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

Я попробовал инструкции по настройке вашей электронной почты в Git, а именно, установил переменные Git github.user и github.token, но это не имело никакого значения.

Я не понимаю, почему это происходит.

160
Вам необходимо кэшировать пароль: https://help.github.com/articles/set-up-git#password-caching Piotr Usewicz 11 лет назад 0

12 ответов на вопрос

205
Sergio Morstabilini

У меня была похожая проблема сегодня: я все испортил в своей рабочей копии, поэтому я решил переименовать каталог и снова клонировать свой проект из github. Но после этого мне пришлось вводить свой пароль для выполнения любого запроса на извлечение / отправку вместо того, чтобы вводить фразу-пароль только один раз, как я это делал раньше.

Это потому, что сегодня я использовал протокол https для клонирования проекта! Чтобы проверить, какой протокол вы используете, просто запустите

git config -l 

и посмотрите на строку, начинающуюся с 'remote.origin.url'.

Для переключения протоколов:

git config remote.origin.url git@github.com:the_repository_username/your_project.git 

the_repository_usernameи your_projectдолжен быть заменен соответствующим именем хранилища и владельцем этого хранилища. Имя пользователя будет вашим, если у вас есть хранилище, или имя пользователя владельца хранилища в противном случае.

Это сработало для меня. Одна вещь состоит в том, что URL содержит не мое имя пользователя, а адрес репо, как это выглядит на github: `git@github.com: some-user / repo-name.git` B Seven 12 лет назад 5
Примечание: Google привел меня сюда. Я установил для `remote.origin.url` метод https и даже не заметил, что существуют методы` https` против `ssh`. Этот URL помог мне увидеть очевидное: https://help.github.com/articles/why-is-git-always-asking-for-my-password Chris K 11 лет назад 1
Есть ли способ пропустить ввод пароля тоже? zishe 11 лет назад 0
Q для тех, у кого есть знания git: есть ли разница (или предпочтение) между `git config remote.origin.url ...`, использованным выше, и `git remote set-url origin ...`? Daryn 11 лет назад 0
Я не мог понять, как удалить неправильное происхождение, как это. Ответ: `git remote rm origin` Vacilando 11 лет назад 0
Почему бы просто не сделать `git config --global user.name" my_username "`? Я согласен с тем, что github не добавляет имя пользователя к URL-адресу клона. Buttle Butkus 8 лет назад 0
Спасибо, @ChrisK !! Разница в SSH / HTTPS на https://help.github.com/articles/why-is-git-always-asking-for-my-password/ была для меня полезной. :-) Ryan 7 лет назад 0
Вместо перечисления всех настроек с помощью `git config -l`, вы можете использовать` git remote -v`, чтобы специально просматривать URL-адреса вашего удаленного репозитория. Steven M. Vascellaro 5 лет назад 0
Когда я пытаюсь нажать, я получаю `git@github.com: Отказано в доступе (publickey) .` Steven M. Vascellaro 5 лет назад 0
28
Eray

If you are using HTTPS instead of SSH, you can follow this :

  1. Find your remote URL (remote.origin.url) with

    git config -l 

    thanks to Sergio Morstabilini

  2. Your remote URL will be like this : https://@github.com//.git

  3. Execute this command :

    git config remote.origin.url https://:@github.com//.git 
само мое имя пользователя содержит `@`, у меня не сработало. coding_idiot 9 лет назад 1
Но если это не так (вам не нужно использовать электронную почту), это работает отлично! Благодарю. Killah 9 лет назад 0
Если ваше имя пользователя содержит символ @, вам необходимо его кодировать по URL. http://meyerweb.com/eric/tools/dencoder/ Tim Bodeit 9 лет назад 3
Вы должны опустить свой пароль по соображениям безопасности. zygimantus 8 лет назад 1
будьте осторожны, пароль будет храниться в виде простого текста внутри файла `.git / config`! Amro 8 лет назад 3
27
Benjamin Bannier

Вам необходимо настроить ssh-agent, для которого вам нужно пройти аутентификацию только один раз. Посмотрите этот ответ в SO для ознакомления.

Но это решение для фраз семейства ssh. Проблема в том, что git использует «git push», который, я полагаю, не запускает ssh-agent. (Я уже сделал это, поэтому я знаю, что это не работает.) picardo 13 лет назад 1
@picardo: я сделал это, и это действительно работает. Daenyth 13 лет назад 2
26
stefanmaric

Я предпочитаю использовать HTTPS, я считаю, что это проще и безопаснее, чем настройка ключей ssh.

Используя HTTPS, вы можете запретить git запрашивать ваше имя пользователя для пультов Github с помощью следующего:

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

И вы можете по крайней мере уменьшить частоту, с которой git запрашивает ваш пароль, с помощью:

git config --global credential.helper 'cache --timeout=28800' 

Где 28800 - это 8 часов. Я использую эту настройку, чтобы ввести свой пароль только один раз, когда я начинаю свой рабочий день.

После этого вы будете иметь эти записи в вашем ~/.gitconfig

[url "https://yourusername@github.com"] insteadOf = https://github.com  [credential] helper = cache --timeout=28800 

Источник:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

Оно работало завораживающе. Благодарю. david euler 6 лет назад 0
6
Brian Burns

If you are on Windows using HTTPS, try the Git Credential Store - it uses the Windows Credential Store to hold your name and password.

Windows Credential Store for Git This application is a small helper app designed to follow the git credentials API as defined by the Git Documentation. Installation 1. Download the git-credential-winstore.exe application 2. Run it! If you have GIT in your PATH, it should just work. 

Then the next time you enter your name and password it will remember them for you.

Спасибо. Проект был переименован в [Git-Credential-Manager-for-Windows] (https://github.com/Microsoft/Git-Credential-Manager-for-Windows). Michael S. 7 лет назад 1
5
Daenyth

Когда вы устанавливаете ключ ssh для github, если это не ваш ключ по умолчанию, вам нужно будет добавить раздел в ваш ~/.ssh/config

Host *github.com User git IdentityFile ~/.ssh/github_id_rsa 
5
David Jeske

Also, if you wish to be prompted for your password every-time, but just not your username, then you configure the remote as HTTPS with a username.. Like this..

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name 

After this, you will be prompted for your password every time, but not your username.

This is how I prefer it, since I like being forced to type my github password before sharing with the world.

2
John Berryman

Все немного по-другому, если вы используете 2-факторную аутентификацию, как и я. Поскольку я не нашел хорошего ответа в другом месте, я его воткну, чтобы, возможно, я смог найти его позже.

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

И я не помню, где я видел это, но когда вас спрашивают о вашем имени пользователя - вот где вы прикрепляете маркер доступа к приложению. Затем оставьте пароль пустым. Работал на моем Mac.

1
William Earl Cheaqui

Also if you are using Windows, you can use:

$ git config --global credential.helper wincred 

you just have to sign in one more time and then git will remember.

1
ViToni

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

Так что я просто добавляю это в мой ".gitconfig"

[url "https://myusername@github.com"] insteadOf = https://github.com