Як переконатися, що Git не запитує мене про своє ім’я користувача та пароль GitHub?


171

Я працюю з репо в GitHub, і кожен раз, коли я намагаюся щось натиснути, воно запитує моє ім’я користувача та пароль GitHub. Я не хочу, щоб це робило.

Я спробував інструкції щодо налаштування вашої електронної пошти в Git , а саме налаштувати змінні Git github.user і github.token, але це не мало значення.

Я не розумію, чому це відбувається.


Вам потрібно кешувати пароль: help.github.com/articles/set-up-git#password-caching
Piotr Usewicz

Відповіді:


33

Вам потрібно налаштувати ssh-агент, на який потрібно лише один раз пройти автентифікацію. Дивіться цю відповідь в SO для отримання викладу.


1
Але це рішення стосується фраз сімейства ssh. Проблема полягає в тому, що git використовує "git push", який не запускає ssh-агент, я припускаю. (Я вже робив це, тому знаю, що це не працює.)
picardo

2
@picardo: Я це зробив, і це справді працює.
Daenyth

213

Сьогодні була подібна проблема: я переплутав речі в своїй робочій копії, тому вирішив перейменувати каталог і знову клонувати мій проект із 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слід замінити відповідною назвою сховища та власником цього сховища. Ім’я користувача буде вашим, якщо ви володієте сховищем, або ім'я користувача власника репозиторію в іншому випадку.


5
Це працювало для мене. Одне полягає в тому, що в URL-адресі немає мого імені користувача, а в репо-адресі, як це відображається на github:git@github.com:some-user/repo-name.git
B 7

1
Примітка: Google привіз мене сюди. Я remote.origin.urlвстановив метод https і навіть не помітив, що існує методи httpsvs. sshЦя URL-адреса допомогла мені побачити очевидне: help.github.com/articles/…
Chris K

Чи є спосіб ввести пароль також?
zishe

Q для тих, хто знає git: будь-яка різниця (або уподобання) між git config remote.origin.url ...використаними вище, порівняно з git remote set-url origin ...?
Дарин

Я не міг зрозуміти, як видалити подібне неправильне походження. Відповідь:git remote rm origin
Васіландо

30

Якщо ви використовуєте HTTPS замість SSH, ви можете дотримуватися цього:

  1. Знайдіть свою віддалену URL-адресу (remote.origin.url) за допомогою

    git config -l
    

    завдяки Серхіо Морстабіліні

  2. Ваша віддалена URL-адреса буде такою: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Виконайте цю команду:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    

2
моє ім’я користувача, яке містить @, не працювало для мене.
coding_idiot

Але якщо цього немає (вам не потрібно використовувати свою електронну пошту), він прекрасно працює! Дякую.
Кілла

4
Якщо ваше ім’я користувача містить @, вам потрібно його кодувати URL. meyerweb.com/eric/tools/dencoder
Тім Бодейт

1
Вам слід пропустити пароль з міркувань безпеки.
зигімантус

3
будьте уважні, пароль буде зберігатися у простому тексті всередині .git/configфайлу!
Amro

26

Я вважаю за краще використовувати 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


6

Під час налаштування ключа ssh для github, якщо це не ваш стандартний ключ, вам потрібно буде додати розділ до свого ~/.ssh/config

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

6

Якщо ви в ОС Windows використовуєте HTTPS, спробуйте магазин довірених файлів Git - він зберігає ваше ім’я та пароль.

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.

Тоді наступного разу, коли ви введете своє ім’я та пароль, вони запам'ятають їх вам.


1
Дякую. Проект було перейменовано на Git-Credential-Manager-for-Windows .
Майкл С.

5

Крім того, якщо ви хочете кожен раз запитувати пароль, але тільки не ваше ім'я користувача, тоді ви налаштовуєте віддалений як HTTPS з іменем користувача ..

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

Після цього вам буде запропоновано ввести пароль кожен раз, але не ваше ім'я користувача.

Саме так я вважаю за краще, оскільки мені подобається, що я змушений вводити свій пароль github перед тим, як ділитися з усім світом.


2

Речі дещо відрізняються, якщо ви використовуєте двофакторний аутентик як я. Оскільки я не знайшов хорошої відповіді в іншому місці, я приклею його тут, щоб, можливо, пізніше його знайти.

Якщо ви користуєтесь двофакторним auth, то введення імені користувача / пароля не працюватиме - вам буде відмовлено у доступі. Але ви можете використовувати маркер доступу до програми та використовувати помічник довіри git, щоб кешувати це для вас. Ось відповідні посилання:

І я не пам'ятаю, де я це бачив, але коли вас запитують ваше ім'я користувача - саме там ви вставляєте маркер доступу до програми. Потім залиште пароль порожнім. Працював над моїм mac.


2

використовувати SSH

Щоб GitHub не запитував пароль під час натискання, в ідеалі слід використовувати SSH ( git@github.com:...) замість URL-адреси HTTPS ( https://github.com/...) та додати ключ SSH до свого облікового запису GitHub . Див.: Яку віддалену URL-адресу я повинен використовувати?

GitHub - Клон із SSH

вірний помічник

В іншому випадку, якщо вам дійсно потрібно використовувати HTTPS, щоб кешувати свій пароль GitHub в Git , вам слід скористатися довідковою інформацією, щоб сказати Git запам'ятати ваше ім'я користувача та пароль GitHub кожного разу, коли він спілкується з GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperобов’язково),
  • Windows: git config --global credential.helper wincred
  • Linux та інші: git config --global credential.helper cache

.netrc

Інший спосіб полягає у використанні налаштування вашого користувача / пароля в ~/.netrc( _netrcу Windows), наприклад

machine github.com
login USERNAME
password PASSWORD

OAuth

Використовуйте маркер OAuth ( персональний маркер API ), щоб натиснути зміни, наприклад

git push https://4UTHT0KEN@github.com/foo/bar

Пов'язані:


1

Також якщо ви використовуєте Windows, ви можете використовувати:

$ git config --global credential.helper wincred

ви просто повинні увійти ще раз і тоді git запам'ятає.


1

Запросити ім’я користувача мені дратує, але просити пароль приємно, оскільки це гарантує, що ви дійсно хочете оприлюднити свої зміни зі своїми змінами ...

Тому я просто додаю це до своєї ".gitconfig"

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

0

Використовуйте Git Credential Manager для Windows , якщо ви працюєте в Windows.

Цей проект включає :

  • Захищене зберігання паролів у магазині облікових даних Windows
  • Підтримка багатофакторної аутентифікації для служб Visual Studio Team
  • Двофакторна підтримка аутентифікації для GitHub
  • Підтримка створення та використання токенів особистого доступу для служб команд Visual Studio та GitHub
  • Підтримка неінтерактивного режиму для служб команд Visual Studio, що підтримується каталогом Azure
  • Аутентифікація Kerberos для Team Foundation Server
  • Необов'язкові параметри для оптимізації агента побудови

Просто завантажте останню версію та встановіть її.

Як користуватись

Ви цього не робите. Це магічно працює, коли потрібні облікові дані.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.