Видаліть облікові дані з Git


623

Я працюю з кількома сховищами, але останнім часом я просто працював у нашому внутрішньому, і все було чудово.

Сьогодні мені довелося вчинити і ввести код в інший, але у мене виникають певні проблеми.

$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://gavekortet@appharbor.com/mitivo.git/info/refs?service=git-receive-pack
fatal: HTTP request failed

Я нічого не можу зробити, що могло б знову ввести пароль.

Як я можу скинути облікові дані своєї системи, щоб Git запитав мене про пароль цього сховища?

Я намагався:

  • git config --global --unset core.askpass

щоб скасувати пароль

  • git config credential.helper 'cache --timeout=1'

щоб уникнути кешу вхідних даних ...

Начебто нічого не працює; хтось має кращу ідею?


У вас є ~/.netrcфайл?
Робінст

2
@robinst це машина Windows, і я не можу знайти цей файл, навіть від Git Bash ...
balexandre

@balexandre для машини Windows, я вважаю за краще використовувати новий (git 1.8.3) допоміжний посібник netrc, який би зберігав кілька облікових даних у зашифрованому файлі. Це краще, ніж вводити свій пароль щоразу для кожного сеансу, оскільки кеш лише "кеширує" пароль протягом певного часу. Дивіться повний приклад тут .
VonC

У мене немає .netrc. У мене є файл у ~ (C: \ Users \ Myself) з іменем .git-облікових даних, але стерти його не вийшло, я все одно увійшов у Git Shell. Крім того, схоже, що менеджер облікових даних на панелі управління нічого не зберігає. Локальні та глобальні конфігураційні файли Git здаються нормальними. Я успадкував свою робочу станцію від співробітника, який вийшов, тому могло бути, що він створив якийсь неортодоксальний механізм кешування даних, що я не маю поняття, як її вимкнути. Я сподіваюся, що така поведінка НЕ ​​є типовим для Git Windows. Для кешування облікових даних Mac є типовим типом, але принаймні він відображається в Keychain Access.
damix911

Більш повну відповідь , який також працює на Linux, Windows і Mac OS X см stackoverflow.com/a/39944557/3906760
MrTux

Відповіді:


653

Якщо ця проблема виникає на машині Windows, виконайте наступне.

  • Перейдіть до диспетчера даних
  • Перейдіть до Уповноважених даних Windows
  • Видаліть записи в розділі Загальні облікові дані
  • Спробуйте підключитися ще раз. Цього разу він повинен запропонувати вам вказати правильне ім’я користувача та пароль.

Перейдіть до диспетчера даних

Перейдіть до облікових даних Windows і видаліть записи в розділі Загальні облікові дані


4
Це актуально лише, якщо ваш credential.helper=manager. Для тестування цього типу git config --list. Якщо встановлено значення, storeтоді облікові дані не зберігаються у сховищі даних, але зберігаються незашифрованими.
Ліам

3
Мені довелося лише видалити ідентифікатор, іменоване, git:https://github.comі мені було запропоновано ввести своє ім’я користувача / пройти наступного разу, коли я клонував репо за допомогою PyCharm. У мене було більше одного облікового запису github, а кешований неправильний.
докоміль

22
Якщо хтось шукає це на німецькій локалізованій машині, це "Anmeldeinformationsverwaltung" на шляху Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltung.
davidenke

3
Крім того, ви можете змінити користувача / пройти в Credential Manager. Це працювало і для мене
Даніель Лерпс,

Видалення облікових даних вирішило мою 403помилку через Bitbucket.
Eido95

673

Кеш облікових даних Git запускає демон-процес, який зберігає ваші дані в пам'яті та передає їх на вимогу. Таким чином, вбивство вашого git-poverljiv-cache - демон-процес викидає все це і призводить до повторного запрошення вашого пароля, якщо ви продовжуєте використовувати це як параметр cache.helper.

Ви також можете відключити використання кешу облікових даних Git, використовуючи git config --global --unset credential.helper. Потім скиньте це, і ви продовжуватимете мати кешовані облікові дані для інших сховищ (якщо такі є). Вам може знадобитися це зробити, git config --system --unset credential.helperякщо це було встановлено у файлі конфігурації системи (наприклад, Git для Windows 2).

У Windows може бути краще використовувати помічник менеджера ( git config --global credential.helper manager). Це зберігає ваші облікові дані у сховищі даних Windows, який має інтерфейс Панелі управління, де ви можете видалити або відредагувати збережені дані. У цьому магазині ваші дані захищені вашим входом у систему Windows і можуть зберігатися протягом декількох сеансів. Менеджер помічник включений в Git для Windows , 2.x замінив раніше wincred помічника , який був доданий в Git для Windows , 1.8.1.1. Подібний помічник під назвою winstore також доступний в Інтернеті і використовувався в GitExtensions, оскільки він пропонує більш інтерфейс, керований графічним інтерфейсом. Менеджер помічник пропонує той же графічний інтерфейс як winstore .

Витяг зі сторінки підтримки Windows 10 із детальною інформацією про менеджер облікових даних Windows:

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

А потім виберіть Уповноважені Windows для редагування (= видалення або зміни) збережених облікових даних git для вказаної URL-адреси.


197
Я знайшов панель керування Windows Credential Control Panel\User Accounts\Credential Managerпід Windows 7
Стів Пітчерс

2
Чи не вбивство цього процесу десь залишає сліди, щоб пароль все ще мав доступ? Відповідно до посібника з git, вони зберігаються у "простому тексті".
Уфос

1
У вікні 8.1 " Довірення Windows" знаходилось під "Загальними сертифікатами" та "git: gitlab.com" або вашим сервером git на вибір.
Джефф

5
У Windows 8/10 детальні налаштування облікових записів користувачів розміщені під "класичною" панеллю керування, а не у програмі "Налаштування" (сучасний інтерфейс користувача). Тільки, щоб уникнути плутанини.
DanielH

1
у вікнах 10 Перейдіть до Панелі керування \ Усі елементи Панелі керування \ Диспетчер даних. Можливо, існує загальний довідник для GitHub. Ви можете оновити ім’я користувача та пароль там.
Старий Авраам

155

Повторно:

$ git config credential.helper store

І тоді вам буде запропоновано знову ввести свої облікові дані.

УВАГА

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

Джерело: https://git-scm.com/docs/git-credential-store


35
ця команда не просить знову вводити мої облікові дані, ця команда нічого не робить
Shirish Herwade

3
@ShirishHerwade спробуйте git pull, тоді ви побачите екранний екран
ismailcem

2
@jkokorian Щоб скасувати цю команду, видаліть відповідні рядки з .git/config.
Зенадікс

110

Я зіткнувся з тим же питанням, що і з ОП. Це приймало мої старі облікові записи Git, які зберігаються десь у системі, і я хотів використовувати Git зі своїми новими обліковими записами, тому я запустив команду

$ git config --system --list

Це показало

credential.helper=manager

Кожного разу, коли я виконував git pushце, я брав своє старе ім'я користувача, яке я встановив довго, і я хотів використовувати новий обліковий запис GitHub, щоб підштовхнути зміни. Пізніше я виявив, що мої старі облікові записи GitHub зберігалися в Панелі керуванняОблікові записи користувачівМенеджер облікових данихКерування обліковими даними Windows .

Управління обліковими даними Windows

Я просто видалив ці повноваження, і коли я git pushйого виконував, я попросив мені свої облікові дані GitHub, і це спрацювало як шарм.


Хороша ілюстрація останнього недавнього диспетчера сертифікатів Git ( github.com/Microsoft/Git-Credential-Manager-for-Windows ), який працює за допомогою зберігання облікових даних ( github.com/Microsoft/Git-Credential-Manager-for-Windows/ випуски /… ) +1
VonC

1
@VonC У мене знадобився день, щоб дізнатися це, оскільки я не знав про цей механізм зберігання облікових даних.
Мурія

Дійсно, це зовсім недавно. Дякуємо, що згадуєте про це тут.
VonC

Це, мабуть, краща відповідь, ніж "прийнята", що для мене передбачає зняття всіх облікових даних. Однозначно мені допомогли.
VictorLegros

52

Спробуйте скористатися командою нижче.

git credential-manager

Тут ви можете отримати різні варіанти управління своїми обліковими записами (перевірте екран нижче).

Введіть тут опис зображення

Або ви можете навіть безпосередньо спробувати цю команду:

git credential-manager uninstall

Це знову почне запитувати паролі для кожного запиту на взаємодію із сервером.


10
Чому я отримую -git: 'credential-manager' is not a git command. See 'git --help'.
Saikat

2
Не впевнений, чому це не працює для вас, але навіть в останній версії git вона доступна. Перейдіть за цим посиланням для отримання додаткової інформації - git-scm.com/book/gr/v2/Git-Tools-Credential-Storage
Himanshu Aggarwal

3
Отримав removal failed. U_U Press any key to continue... fatal: InvalidOperationException encountered. Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read.(з приємними U_U
емоджими

1
Єдине рішення, яке працювало для мене в Windows з GitBash.
alain.janinm

можливо, убік, але я встановив git через choco, і цей метод [видалення] був хорошим для мене, коли я перетягнув репо на розгорнутому комп'ютері без зберігання облікових даних
beep_check

32

Я знайшов щось, що працювало на мене. Коли я написав свій коментар до ОП, я не зміг перевірити файл конфігурації системи:

git config --system -l

показує а

credential.helper=!github --credentials

рядок. Я відкидаю це

git config --system --unset credential.helper

і тепер облікові дані забуті.


2
Ankur, можливо, вам доведеться запустити запропоновану команду аналогічними способами з 2-3 разів, якщо ви отримали пару конфігурованих помічників. git config --global --unset credential.helperа може, просто git config --unset credential.helperу вашому сховищі, якщо ви якимось чином явно його встановили.
dragon788

дякую за рішення. Просто деталь: у моєму випадку мені довелося запустити командний рядок як адміністратор
A.Joly

30

У моєму випадку Git використовує Windows для зберігання облікових даних.

Все, що вам потрібно зробити - це видалити збережені облікові дані, які зберігаються у вашому обліковому записі Windows:

Меню облікових даних Windows


1
Чим це відрізняється від цієї відповіді ? чи цей ?
Ліам

20
git config --list

покаже credential.helper = manager(це на машині Windows)

Щоб вимкнути це кешоване ім’я користувача / пароль для вашої поточної локальної папки git, просто введіть

git config credential.helper ""

Таким чином, git щоразу запросить пароль, ігноруючи те, що збережено всередині "менеджера".


У мене є помилка нижче, git: 'credential-' is not a git command. See 'git --help'.але для безпеки я підтримую цю відповідь, оскільки це єдине, що змусило мене запропонувати новий пароль. Мені цікаво, однак, якщо це не просто маскування проблеми (справді видалений пароль?)
ribamar

Ні: rm -rf ~/.git-credentialsзробив. Зауважте, що він може змінюватись ( git help credential-store)
ribamar

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

git config --unset credential.helperочищає запис. Ця відповідь просто встановлює порожню рядок і видає помилку, яку @ribamar описав у коментарях.
Темний замок

15

У Windows 2003 Server із "wincred" * жодна з інших відповідей мені не допомогла. Мені довелося користуватися cmdkey.

  • cmdkey /list перелічує всі збережені облікові дані.
  • cmdkey /delete:Target видаляє обліковий запис із ім'ям "Ціль".

cmdkey / список;  cmdkey / delete: Ціль

(* Я маю на увазі під "wincred" git config --global credential.helper wincred)


Так, чи cmdkeyє аналогом командного рядка облікові дані Windows, описаними у вибраній відповіді.
nicobo

15

Ця помилка з’являється, коли ви використовуєте кілька облікових записів Git на одній машині.

Якщо ви використовуєте macOS, ви можете видалити збережені облікові дані github.com .

Для видалення облікових даних github.com виконайте наведені нижче дії .

  1. Відкрийте доступ до брелка
  2. Знайдіть гітуба
  3. Виберіть github.com та клацніть правою кнопкою миші на ньому
  4. Видалити "github.com"
  5. Повторіть спробу на Push або Pull to git, і він запитає облікові дані.
  6. Введіть дійсні облікові дані для облікового запису сховища.
  7. Зроблено

    введіть тут опис зображення


Дякую, це чудово працює на mac os
babygame0ver

13

Потрібно увійти у відповідний github usernameтаpassword

Щоб очистити ім'я користувача та пароль у Windows

Панель управління \ Облікові записи користувачів \ Кредитний менеджер

Редагування вірогідних даних

Видаліть існуючого користувача та перейдіть до командного рядка, напишіть команду push, у якій відображається спливаюче вікно github для входу в username/ emailі password.

Тепер ми можемо натиснути код після переключення користувача.


13

Отримала таку ж помилку, коли робила "git pull", і ось я її виправила.

  1. Змініть репо на HTTPS
  2. Запустити команду git config --system --unset credential.helper
  3. Запустити команду git config --system --add credential.helper manager
  4. Команда тесту git pull
  5. Введіть облікові дані у вікно входу, яке з'явиться.
  6. Витягнення Git успішно завершено.

--система? Що про --глобал? А що не стосується? Що означає область налаштування?
masterxilo

Просто з кроком 1 вирішив мою проблему.
zzxwill

11

Видаліть цей рядок зі свого файлу .gitconfig, який знаходиться в папці користувача, яка зараз увійшов у систему Windows:

[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"

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



10

Ви повинні оновити його у своєму менеджері довірених даних.

Перейдіть до Панелі управління> Облікові записи користувачів> Менеджер довірених даних> Уповноважені системи Windows. У списку ви побачите облікові дані Git (наприклад, git: https: //). Клацніть по ньому, оновіть пароль і виконайте команду git pull / push зі свого Git bash, і це більше не видасть повідомлення про помилки.


10

Використовуючи останню версію git для Windows в Windows 10 Professional, і у мене була подібна проблема, в якій у мене є два різні облікові записи GitHub, а також обліковий запис Bitbucket, тому речі стали трохи заплутаними для VS2017, розширень git та git bash.

Я спочатку перевірив, як git обробляє мої облікові дані за допомогою цієї команди (запустіть git bash з підвищеними командами або ви отримаєте помилки):

git config --list

Я знайшов диспетчер даних про керування довідками, тому я натиснув кнопку START> набрав диспетчера даних та натиснув лівою кнопкою миші жовтий безпечний значок менеджера облікових даних, який запустив додаток. Потім я натиснув на вкладки Повноважні дані Windows і знайшов запис для мого поточного облікового запису git, який стався біт-відром, тому я видалив цей обліковий запис.

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

git config --system --unset credential.helper

Тоді я зробив git push, і мені було запропоновано ввести ім'я користувача GitHub, яке я ввів (правильне, що мені потрібно), а потім пов'язаний пароль і все було натиснуто правильно.

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


працював для мене ..thank ви
Крішнамурті Ачарья

8

У моєму випадку я не зміг знайти облікові дані, збережені в Менеджері облікових даних Windows (Windows 7).

Мені вдалося скинути свої облікові дані, виконавши

git config --global credential.helper wincred

Це була чесно Марія, щоб побачити, чи не знищить мої повноваження, і чи справді це спрацювало.


Це працювало для мене; У мене не було запису в диспетчері облікових даних, який потрібно видалити.
bdwakefield

7

Ви можете видалити рядок credential.helper=!github --credentialsіз наведеного нижче файлу C:\Program Files\Git\mingw64\etc\gitconfig, щоб видалити облікові дані git


7
  1. Йти до C:\Users\<current-user>
  2. перевірити .git-credentialsфайл
  3. Видаліть вміст або змініть відповідно до вашої вимоги
  4. Перезавантажте свій термінал

єдине рішення, яке працювало для мене
Вахберн

7

У Windows, принаймні, git remote show [remote-name]буде працювати, наприклад

git remote show origin

Не впевнений, чому потік. Це дійсно працює. Я застрягаю з усім іншим.
Jason S

... і я просто сьогодні його знову використовував, успішно. Кожен раз, коли я змінюю свій пароль на роботі, мені потрібно це зробити.
Джейсон S

2
Діяла принадність для мене.
IronAces

Те ж саме. Вам навіть не потрібно бути в каталозі сховищ
Nicola Musatti

6

Якщо ви хочете, щоб git забув старі збережені облікові дані та знову ввів ім'я користувача та пароль, ви можете зробити це, використовуючи команду нижче:

git credential-cache exit

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


3

Нарешті для мене це виправлено - використовувати робочий стіл GitHub, перейти до налаштувань сховища та видалити user: pass @ з URL-адреси сховища. Потім я спробував натиснути з командного рядка, і мені було запропоновано ввійти в облікові дані. Після того, як я вклав їх, все повернулося до норми. І Visual Studio, і командний рядок працюють, і, звичайно, робочий стіл GitHub.

GitHub Desktop-> Репозиторій-> Налаштування сховища-> Віддалена вкладка

Змінити первинний віддалений сховище (походження) з:

https: //pork@muffins@github.com/MyProject/MyProject.git

До:

https://github.com/MyProject/MyProject.git

Натисніть "Зберегти"

Посвідчення особи будуть очищені.


Скидання початкового коду до того самого, що знаходиться в командному рядку в Windows, вирішило мою проблему. Я використовую GitLab, тому я не міг використовувати для цього GitHub Desktop.
Девід Варгас

3

Для користувачів macOS:

Ця помилка з’являється, коли ви використовуєте кілька облікових записів Git на одній машині.

Для видалення облікових даних github.com виконайте наведені нижче дії.

  1. Перейдіть до Finder
  2. Перейдіть до програми
  3. Перейдіть до папки «Утиліти»
  4. Відкрийте доступ до брелка
  5. Виберіть github.com та клацніть правою кнопкою миші на ньому

    Видалити "github.com"

Повторіть спробу на Push або Pull to git, і він запитає облікові дані. Введіть дійсні облікові дані для облікового запису сховища. Зроблено


3

Для Windows 10 перейдіть до нижнього контуру,

Панель управління \ Облікові записи користувачів \ Кредитний менеджер

У цьому місці будуть 2 вкладки,

  1. Веб-облікові дані та 2. Вхідні дані Windows.

Перейдіть на вкладку облікових даних Windows і тут ви зможете побачити збережені облікові дані github під заголовком "Загальні облікові дані".

Ви можете видалити їх звідси і спробувати і повторно клонувати - він запитає ім’я користувача / пароль зараз, оскільки ми щойно видалили збережений обліковий запис із систем Windows 10


2

Щоб очистити менеджерів облікових даних Git для кешу Windows:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

або

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache

2

Спробуйте це, коли нічого, як зазначено вище, не працює для вас.

git config credential.helper 'cache --timeout=30'

це видалить кеш-пам'ять кожні 3 сек і запитає ім'я користувача та пароль. Ви можете повторно запустити команду зі збільшеними значеннями тайм-ауту.


1

У нашому випадку очищення пароля у файлі .git-облікових даних користувача працювало на нас.

c:\users\[username]\.git-credentials

Так, кілька інших людей вже багато разів заявляли про це
Ліам

1

Будуючи на основі голосової відповіді @ patthoyts ( https://stackoverflow.com/a/15382950/4401322 ):

Його відповідь використовує, але не пояснює конфігурації "локальний" проти "глобальний" проти "системний". Офіційна документація на git для них є тут і її варто прочитати.

Наприклад, я в Linux і не використовую системний конфігурацію, тому я ніколи не використовую --systemпрапор, але зазвичай потрібно розмежовувати конфігурації --localта --globalналаштування.

У моєму випадку використання - це два крендентиали Github; один для роботи, і один для гри.

Ось як я впорався з проблемою:

$ cd work
# do and commit work
$ git push origin develop
# Possibly prompted for credentials if I haven't configured my remotes to automate that. 
# We're assuming that now I've stored my "work" credentials with git's credential helper.

$ cd ~/play 
# do and commit play
$ git push origin develop                                                                   
remote: Permission to whilei/specs.git denied to whilei.                
fatal: unable to access 'https://github.com/workname/specs.git/': The requested URL returned error: 403

# So here's where it goes down:
$ git config --list | grep cred
credential.helper=store # One of these is for _local_
credential.helper=store # And one is for _global_

$ git config --global --unset credential.helper
$ git config --list | grep cred
credential.helper=store # My _local_ config still specifies 'store'
$ git config --unset credential.helper
$ git push origin develop
Username for 'https://github.com': whilei
Password for 'https://whilei@github.com':
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 1.10 KiB | 1.10 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/whilei/specs.git
   b2ca528..f64f065  master -> master

# Now let's turn credential-helping back on:
$ git config --global credential.helper "store"
$ git config credential.helper "store"
$ git config --list | grep cred
credential.helper=store # Put it back the way it was.
credential.helper=store

Варто також відзначити, що існують способи взагалі уникнути цієї проблеми, наприклад, ви можете використовувати ~/.ssh/configпов'язані SSH ключі для Github (один для роботи, один для гри) та відповідні призначені для користувача віддалені хости для вирішення контекстуалізації аутентифікації теж.


1

Щоб додати до https://stackoverflow.com/a/41111629/579827 @ericbn ось приклади команд, вкладених у сценарій, я запускаю для оновлення всіх моїх паролів при їх поновленні. Це, мабуть, не є корисним, оскільки є досить специфічним, але воно показує використання реального життя cmdkey.exe.

Script Це сценарій оболонки, запущений у cygwin

Works Це працює, тому що я використовую приватні git repos, які всі автентифікуються одним і тим же паролем (ви, мабуть, не хочете перебирати цими ж обліковими /listзаписами , але ви можете повторно використовувати цю прикладну команду для отримання списку вже зареєстрованих облікових даних) ⚠

entries=`cmdkey.exe /list: | grep git | sed -r -e 's/^[^:]+:\s*(.*)$/\1/gm'`
for entry in ${entries}
do
    cmdkey.exe "/delete:${entry}"
    cmdkey.exe "/generic:${entry}" "/user:${GIT_USERNAME}" "/pass:${GIT_PASSWORD}"
done

0

Якщо ви автентифіковані за допомогою вашої пари ключів, ви можете видалити або перемістити приватний ключ, або зупинити ключовий агент і спробувати.


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