Git запитує ім’я користувача кожного разу, коли я натискаю


675

Кожного разу, коли я намагаюся проштовхнутися у свій репо-гіт, просить і те, і інше username & password.

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

Отже, як я можу налаштувати git так, щоб він не просив usernameкожного git push.

Я новачок у Linux, але IIRC у Windows git pushзапитує лише пароль.


1
Пов'язаний питання: stackoverflow.com/questions/2233590 / ...
ГВП

@Wug: Але я не хочу зберігати пароль. Я хочу лише зберегти ім’я користувача.
RanRag

4
спробуйте дотримуватися цих вказівок та пропустіть рядок пароля.
Вуг


є також відповідь суперпользователя на ваше первинне запитання - superuser.com/questions/847181/…
dk14

Відповіді:


975

Редагувати (від @ dk14, як пропонують модератори та коментарі)

ПОПЕРЕДЖЕННЯ. Якщо ви використовуєте credential.helper storeвідповідь, ваш пароль буде зберігатися повністю незашифрованим ("як є") в ~/.git-credentials. Будь ласка, зверніться до розділу коментарів нижче або до відповідей із розділу "Пов'язані", особливо якщо ваш роботодавець має нульову толерантність до питань безпеки.

Незважаючи на те, що він прийнятий, він не відповідає на власне запитання ОП про відсутність лише імені користувача (не пароля). Для читачів з цієї конкретної проблемою @ grawity в відповідь може стати в нагоді.


Оригінальна відповідь (автор @Alexander Zhu):

Ви можете зберігати свої облікові дані за допомогою наступної команди

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

Також пропоную прочитати
$ git help credentials


160
Попередження, у цього методу немає захисту. Ваш пароль зберігається як простий текст.
Марк Лаката

13
ви можете знайти кращі способи для досягнення безпеки тут - stackoverflow.com/a/28104587/1809978
dk14

4
@MarkLakata - Скажіть, будь ласка, як я можу скасувати команду у цій відповіді? Після того, як я скасую його, я використовуватиму захищений метод для зберігання облікових даних.
MasterJoe2

25
@ testerjoe2 спробуйтеgit config --unset credential.helper
dk14

1
Не забудьте встановити час очікування, за замовчуванням - 15 хв. - Установіть значення 30 мільйонів, щоб мати близько 1 року. Знайдено тут: stackoverflow.com/a/35942890/1579667
Benj

180

Ви можете зробити це у .git/configфайлі вашого локального сховища. Цей файл містить розділ під назвою "віддалений" із записом, який називається "URL". Запис "URL" повинен містити https-посилання сховища, про яке ви говорите.

Коли ви вказуєте префікс хосту "url" зі своїм іменем користувача, більше gitне слід запитувати ваше ім'я користувача. Ось приклад:

url = https://username@repository-url.com

5
Якщо ви використовуєте спеціальні символи у своєму імені користувача або pw, вам слід уникати їх. Дивіться на en.wikipedia.org/wiki/Percent-escape правильні символи втечі. наприклад, "! @ #" [без лапок] буде замінено на "% 21% 40% 23". Дивіться також відповідь "Даніель Лерч" нижче
1414

1
Чи побачать моє ім’я інші користувачі, що працюють у тому ж сховищі?
CodyBugstein

17
Це має бути правильна відповідь на питання ОП, тобто "як зберігати ім'я користувача, НЕ пароль". Ця відповідь не тільки є правильним способом збереження імені користувача, але також дозволяє уникнути можливого ризику безпеки git config credential.helper store.
RayLuo

Я вдячний за цю відповідь і спробував так, але все одно мене просять кожен раз (v 2.1.4) - спробував Remoteurl з name@gitlab.com AND name%40mailaddress.com@gitlab.com - він завжди проситьusername for https://gitlab.com:
eli

1
Я спробував це і отримавunable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger

118

Постійна автентифікація зі сховищами Git

Виконайте наступну команду, щоб увімкнути кешування облікових даних:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Використання також повинно вказати термін дії кешування

git config --global credential.helper "cache --timeout 7200"

Після ввімкнення кеширування облікових даних він буде кешований протягом 7200 секунд (2 години) .


Прочитайте облікові документи Документи

$ git help credentials

Я встановив час очікування на 7200. Але тоді я подумав встановити його на 5 для тестування. Тому я встановив його на 5, але тоді, коли я намагався знову натиснути через 30 секунд, але мене не запитали ім'я користувача або пароль.
Buttle Butkus

Можливо, ваш обліковий запис не зберігається в усьому світі.
Джей Патель

Щодо безпеки, варто посилатись на документи: "Ця команда зберігає в пам'яті облікові дані для використання майбутніми програмами Git. Збережені облікові дані ніколи не торкаються диска, і вони забуваються після настроюваного тайм-ауту." git-scm.com/docs/git-credential-cache
mloskot

2
Хіба це не та git config credntial.helper storeнебезпечна команда, яка відповідає за зберігання даних простого тексту у файлі ~ / .git-mandents? Я думаю (і на мій досвід) команда ... cache ...- є достатньою: git config --clogal credential.helper 'cache --timeout 7200'вона створює dir: ~/.git-credential-cacheіз кеш-файлом у ній. Отже, просто виконайте цю команду, а не команду "... store".
eli

Не працювало для мене. І все-таки просити пароль кожен раз
Ian Grainger

75

Додайте нові SSH ключі, як описано в цій статті на GitHub .

Якщо Git все ще запитує вас для імені користувача та пароля, спробуйте змінити https://github.com/на git@github.com:віддалену URL-адресу:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
Це має бути правильна відповідь! Збереження облікових даних неймовірно не захищено. Якщо у мене є ключ SSH, він запитує у мене свою облікову інформацію лише тому, що у мене немає правильної URL-адреси, як зазначено тут.
Алексіс Вілке

2
або ви можете скористатисьgit config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness

1
git config remote.origin.url git@gitlab.com: adammajewski / ray-backward-iteration.git
Адам,

1
Дякую, це відповідь, яку я шукав.
Yupeng Tang

50

Найпростіший спосіб я знайшов за допомогою цієї команди:

git config --global credential.https://github.com.username <your_username>

Це працює на веб-сайті за принципом і змінює глобальну конфігурацію git.

Щоб переглянути зміни, використовуйте:

git config --global --edit

1
Чомусь це був єдиний метод, який працював на мене. Дякую!
математика

чи безпечний цей метод? чи зберігаються паролі github лише на локальному комп’ютері, а не натискаються на github?
Акін Хван

Я не знаю, чому це не схвалена відповідь, команда працює відмінно і відповідає повністю і лише на питання: зберігання імені користувача, а не пароля. Дякую Бен!
AmaelH

Ви також можете запустити: [git config --global credential.helper 'cache --timeout = 3600'] Отже, ваш пароль буде щоразу зберігатися протягом години
obenda

31

Якщо ви використовуєте https замість ssh, ви можете відредагувати "URL", .git/configяк каже user701648, але якщо ви хочете, ви можете додати також пароль:

url = https://username:password@repository-url.com

1
Що робити, якщо він @включений до мого пароля? url = https://username:abc@123@repository-url.comЦе дає мені помилку в тому, щоCould not resolve host: @123@git.com
Рахул Манкар

usernameЧастина , здається, ігнорується, коли сервер перенаправлення (наприклад, від FOO до FOO.git).
Михайло Т.

22

Ви можете встановити своє ім’я користувача для всіх сховищ на певному сайті, помістивши щось подібне до вашого файлу конфігурації Git. Ви хочете змінити " https://example.com " та "me" на фактичну URL-адресу та власне ім'я користувача.

[credential "https://example.com"]
    username = me

(Це безпосередньо з "git help help")


16

Зміна роботи клонованого репо:

git remote set-url origin git@github.com:gitusername/projectname.git

Використання кешованих облікових даних працює, а встановлення періоду очікування робить речі менш дратівливими. Якщо ви користуєтесь помічником для підтвердження даних Windows, це повинен бути найпростішим методом (особливо якщо SSH заблокований).


Це правильна відповідь для GitHub (який конкретно задає питання ... (не впевнений, чому ви втратили чинність).
Тім Гріневельд

12

Переконайтеся, що ви використовуєте SSH замість http. Перевірте цю відповідь.


3
Але мені довелося користуватися, httpоскільки в моєму університеті sshблокується відділ sys-admin.
RanRag

Тоді, можливо, це посилання вам допоможе.
gkris

Зараз на цій сторінці є офіційна довідкова сторінка GitHub. Що сталося зі мною, то я клонував одну з власних репостів перед входом у систему, щоб він не впізнав мене, і я вважаю, що дефолт став HTTPS. help.github.com/articles/changing-a-remote-s-url
anon58192932


9

Окрім відповіді user701648, ви можете зберігати свої облікові дані у домашній папці (глобальній для всіх проектів), а не в папці проекту, використовуючи наступну команду

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

Коли я лише git pull origin git pull origin xxx , git запитує як ім’я користувача, так і пароль.

git config credential.helper store

це працює.


9

Найпростіший спосіб - створити ~/.netrcфайл із таким вмістом:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(як показано тут: https://gist.github.com/ahoward/2885020 )

Ви навіть можете закрити дозволи на цей файл, щоб ніхто не міг прочитати ваш пароль, набравши:

chmod 600 ~/.netrc

6

Якщо ви використовуєте версію SSH , у вас не виникне жодних проблем із паролями. Тільки один раз, коли ви генеруєте ключ SSH , скажіть git, що цей ПК буде працювати з цим обліковим записом github і більше ніколи не запитайте мене про будь-який доступ (для цього ПК).

Як створити SSH для Github


4

Щоб не вводити ім’я користувача, але все-таки пропонується ввести пароль, ви можете просто клонувати ваше сховище, включаючи ім’я користувача:

git clone user_name@example.gitrepo.com/my_repo.git


3

ssh+ key authenticationє більш надійним способом, ніж https+credential.helper

Ви можете налаштувати використовувати SSH замість HTTPS для всіх сховищ:

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

url.<base>.insteadOfдокументований тут .


2

Швидкий метод

отримати URL-адресу вашої git під час роботи dir:

git config remote.origin.url

тоді :

git config credential.helper store

git push "url of your git"

останній раз запитає ім’я користувача та пароль

зроблено.


1

Можна просто бігти

git config --global credential.helper wincred

після встановлення та входу в GIT для Windows у вашій системі.


DID не бачить слово Linux у запиті. Мій поганий
cyperpunk

1

(Тільки для Mac OS)

для Windows та Linux див. посилання на документацію Github, згадане нижче.

З документації Github: Документація посилання

Кешування пароля GitHub в Git

  • Вам потрібен Git 1.7.10 або новішої версії, щоб скористатися допоміжною програмою для використання облікових даних osxkeychain.

    щоб перевірити свою версію Git: git --version

  • щоб дізнатись помічник osxkeychain вже встановлений:

    git credential-osxkeychain

    якщо ви отримаєте наступну відповідь, тоді ви вже встановили і готові до використання на своєму mac:

    > Usage: git credential-osxkeychain <get|store|erase>

    якщо ви не отримаєте відповідь, як показано вище, ви можете встановити її за допомогою наступної команди:

    git credential-osxkeychain

  • сказати git глобально використовувати osxkeychain для облікових даних git:

    git config --global credential.helper osxkeychain

    Він підкаже один раз перед тим, як зберегти облікові дані брелка .

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