Удалить учетные данные из Git

624

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

Сегодня я должен был зафиксировать и вставить код в другой, но у меня возникли некоторые проблемы.

$ 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'

во избежание кэша учетных данных ...

Ничто не похоже на работу; у кого-нибудь есть идея получше?

balexandre
источник
У вас есть ~/.netrcфайл?
Робинст
2
@robinst - это машина для Windows, и я не могу найти этот файл, даже из Git Bash ...
balexandre
@balexandre для компьютера с Windows, я предпочитаю использовать новый (git 1.8.3) помощник по учетным данным netrc, который будет хранить несколько учетных данных в зашифрованном файле. Это лучше, чем вводить пароль каждый раз для каждого сеанса, поскольку кэш-память только «кэширует» пароль в течение определенного времени. Смотрите полный пример здесь .
VonC
У меня нет .netrc. У меня есть файл в ~ (C: \ Users \ Myself) с именем .git-credentials, но удаление его не сработало, я все еще вошел в Git Shell. Кроме того, Диспетчер учетных данных панели управления, похоже, ничего не хранит. Локальные и глобальные файлы конфигурации Git кажутся нормальными. Я унаследовал свою рабочую станцию ​​от ушедшего сотрудника, поэтому он мог установить какой-то неортодоксальный механизм кэширования учетных данных, который я понятия не имею, как отключить. Я надеюсь, что это поведение не по умолчанию Git Windows. На Mac кэширование учетных данных используется по умолчанию, но, по крайней мере, оно отображается в Keychain Access.
damix911
Более полный ответ, который также работает на Linux, Windows и Mac OS X, см. Stackoverflow.com/a/39944557/3906760
MrTux,

Ответы:

655

Если эта проблема возникает на компьютере с Windows, выполните следующие действия.

  • Перейти к диспетчеру учетных данных
  • Перейти к учетным данным Windows
  • Удалить записи под общие учетные данные
  • Попробуйте подключиться снова. На этот раз он должен запросить у вас правильное имя пользователя и пароль.

Перейти к диспетчеру учетных данных

Перейдите в учетные данные Windows и удалите записи в разделе Общие учетные данные

Венкатарамана Мадугула
источник
4
Это актуально только если ваш credential.helper=manager. Чтобы проверить этот тип git config --list. Если он установлен, storeто учетные данные не хранятся в хранилище учетных данных, но хранятся в незашифрованном виде.
Лиам
3
Мне только нужно было удалить именованные учетные данные, git:https://github.comи мне было предложено ввести свое имя пользователя / пароль в следующий раз, когда я клонировал репо с помощью PyCharm. У меня было более одного аккаунта на github, и неправильный был кэширован.
dotcomly
22
Если кто-то ищет это на немецкой локализованной машине, это «Anmeldeinformationsverwaltung» на пути Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltung.
Давиденке
3
В качестве альтернативы вы можете изменить пользователя / передать в Credential Manager. Это сработало и для меня
Даниэль Лерпс
Удаление учетных данных решило мою 403ошибку через Bitbucket.
Eido95
674

Кэш учетных данных Git запускает процесс демона, который кэширует ваши учетные данные в памяти и передает их по требованию. Таким образом, уничтожение вашего git-credential-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-адреса.

patthoyts
источник
198
Я нашел панель управления Control Panel\User Accounts\Credential Manager
Стив Питчерс,
2
Разве уничтожение процесса не оставляет следов где-нибудь, чтобы пароль мог все еще быть доступным? Согласно руководству по git они хранятся в «обычном тексте».
Ufos
1
В Windows 8.1 « Учетные данные Windows» находились в разделе «Общие учетные данные» и git: gitlab.com или выбранный вами git-сервер.
Джефф
5
В Windows 8/10 подробные настройки учетной записи пользователя находятся в «классической» панели управления, а не в приложении «Настройки» (современный пользовательский интерфейс). Просто чтобы избежать путаницы.
DanielH
1
в Windows 10 Перейдите в Панель управления \ Все элементы панели управления \ Диспетчер учетных данных. Могут быть общие учетные данные для GitHub. Вы можете обновить имя пользователя и пароль там.
Элдхоз Авраам
156

Повторите:

$ git config credential.helper store

И тогда вам будет предложено ввести свои учетные данные снова.

ПРЕДУПРЕЖДЕНИЕ

С помощью этого помощника ваши пароли будут храниться в незашифрованном виде на диске.

Источник: https://git-scm.com/docs/git-credential-store

aaafly
источник
37
эта команда не просит вводить мои учетные данные снова, эта команда ничего не делает
Шириш Хервейд
3
@ShirishHerwade попробуйте git pull, тогда вы увидите экран с подсказкой
ismailcem
2
@jkokorian Чтобы отменить эту команду, удалите соответствующие строки из .git/config.
Zenadix
110

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

$ git config --system --list

Показало

credential.helper=manager

Всякий раз, когда я выполнял git pushэто, он брал мое старое имя пользователя, которое я давно установил, и я хотел использовать новую учетную запись GitHub для отправки изменений. Позже я обнаружил, что мои старые учетные данные GitHub хранятся в Панели управленияУчетные записи пользователейДиспетчер учетных данныхУправление учетными данными Windows .

Управление учетными данными Windows

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

Mourya
источник
Хорошая иллюстрация недавнего недавнего использования Git Credential Manager ( github.com/Microsoft/Git-Credential-Manager-for-Windows ), который работает путем хранения учетных данных ( github.com/Microsoft/Git-Credential-Manager-for-Windows/ выпуски /… ) +1
VonC
1
@VonC Мне потребовался день, чтобы выяснить это, поскольку я не знал об этом механизме хранения учетных данных.
Mourya
Это действительно совсем недавно. Спасибо, что упомянули это здесь.
VonC
Это, вероятно, лучший ответ, чем «принятый», что для меня подразумевает сброс всех учетных данных. Определенно помог мне.
VictorLegros
53

Попробуйте использовать приведенную ниже команду.

git credential-manager

Здесь вы можете получить различные параметры для управления своими учетными данными (проверьте экран ниже).

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

Или вы можете даже напрямую попробовать эту команду:

git credential-manager uninstall

Это снова начнет запрашивать пароли при каждом запросе взаимодействия с сервером.

Химаншу Аггарвал
источник
11
Почему я получаю -git: 'credential-manager' is not a git command. See 'git --help'.
Сайкат
2
Не уверен, почему он не работает для вас, но даже в последней версии git он доступен. Пожалуйста, обратитесь по этой ссылке для получения дополнительной информации - git-scm.com/book/gr/v2/Git-Tools-Credential-Storage
Химаншу Аггарвал
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эмодзи из ниоткуда :))
Jeromej
1
Единственное решение, которое работало для меня на Windows с GitBash.
alain.janinm
может быть, в стороне, но я установил git через choco, и этот метод [удаления] был хорош для меня, чтобы вытащить репо на развернутом компьютере без сохранения учетных данных
beep_check
32

Я нашел то, что сработало для меня. Когда я написал свой комментарий к OP, мне не удалось проверить файл конфигурации системы:

git config --system -l

показывает

credential.helper=!github --credentials

линия. Я снял это с

git config --system --unset credential.helper

и теперь учетные данные забыты.

damix911
источник
2
Анкур, вам может понадобиться запустить предложенную команду аналогичным образом 2-3 раза, если вы настроили пару помощников по учетным данным. git config --global --unset credential.helperи, может быть, просто git config --unset credential.helperв вашем хранилище, если вы как-то явно указали это там.
dragon788 26.09.16
спасибо за решение. Просто деталь: в моем случае я должен был запустить командную строку как администратор
A.Joly
30

В моем случае Git использует Windows для хранения учетных данных.

Все, что вам нужно сделать, это удалить сохраненные учетные данные, хранящиеся в вашей учетной записи Windows:

Меню учетных данных Windows

SoliQuiD
источник
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)
Рибамар
извини, это действительно не работает. он запросит пароль еще раз и сохранит его снова. удалил бы мое upvote если позволено
Рибамар
git config --unset credential.helperочищает запись Этот ответ просто устанавливает пустую строку и выдает ошибку, которую @ribamar описал в комментариях.
Темный замок
15

В Windows 2003 Server с «wincred» * ни один из других ответов не помог мне. Я должен был использовать cmdkey.

  • cmdkey /list перечисляет все сохраненные учетные данные.
  • cmdkey /delete:Target удаляет учетные данные с именем «Target».

cmdkey / list;  cmdkey / delete: цель

(* Под "wincred" я имею в виду git config --global credential.helper wincred)

ericbn
источник
Да, cmdkeyаналог командной строки для учетных данных Windows, описанных в выбранном ответе.
nicobo
15

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

Если вы используете macOS, вы можете удалить сохраненные учетные данные github.com .

Выполните следующие действия, чтобы удалить учетные данные github.com .

  1. Открытый доступ к брелку
  2. Найти GitHub
  3. Выберите github.com и щелкните по нему правой кнопкой мыши.
  4. Удалить "github.com"
  5. Попробуйте еще раз нажать или потяните, чтобы git, и он попросит учетные данные.
  6. Введите действительные учетные данные для учетной записи репозитория.
  7. Выполнено

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

Пратик Патель
источник
Спасибо, это отлично работает на Mac OS
babygame0ver
13

Необходимо войти в систему с соответствующим GitHub usernameиpassword

Очистить логин и пароль в windows

Панель управления \ Учетные записи пользователей \ Диспетчер учетных данных

Редактировать учетные данные Windows

Удалите существующего пользователя и теперь перейдите в командную строку и напишите команду push, которая показывает всплывающее окно github, чтобы ввести username/ emailи password.

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

Амит К
источник
13

Получилась та же ошибка при выполнении 'git pull', и я так и исправил.

  1. Изменить репо на HTTPS
  2. Команда Run git config --system --unset credential.helper
  3. Команда Run git config --system --add credential.helper manager
  4. Тестовая команда git pull
  5. Введите учетные данные в открывшемся окне входа.
  6. Git pull успешно завершен.
Амер Башоб
источник
--system? Как насчет --global? Как насчет без сферы? Что означает область настройки?
masterxilo
Просто с помощью шага 1 решена моя проблема.
zzxwill
11

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

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

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

Ливиу М.
источник
11

Вы должны обновить его в диспетчере учетных данных.

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

ChiragBhalgami
источник
10

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

Сначала я проверил, как git обрабатывает мои учетные данные с помощью этой команды (запустите git bash с повышенными командами, или вы получите ошибки):

git config --list

Я нашел запись «Диспетчер учетных данных», поэтому я нажал на кнопку «Пуск»> набрал «Диспетчер учетных данных» и щелкнул левой кнопкой мыши на желтом значке сейфа диспетчера учетных данных, который запустил приложение. Затем я нажал на вкладку «Учетные данные Windows» и нашел запись для моей текущей учетной записи git, которая оказалась Bit-bucket, поэтому я удалил эту учетную запись.

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

git config --system --unset credential.helper

Затем я сделал git push и мне было предложено ввести имя пользователя GitHub, которое я ввел (правильное, которое мне было нужно), а затем связанный пароль и все было выдвинуто правильно.

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

Тахир Халид
источник
работал на меня .. спасибо
Кришнамурты Ачарья
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
Джейсон С
источник
Не уверен, почему понизить. Это работает. Я застрял со всем остальным.
Джейсон С
... и я просто использовал это снова сегодня, успешно. Каждый раз, когда я меняю свой пароль на работе, мне нужно это делать.
Джейсон С
2
Работал брелок для меня
IronAces
Тоже самое. Вам даже не нужно находиться в каталоге хранилища
Никола Мусатти
6

Если вы хотите, чтобы git забыл старые сохраненные учетные данные и повторно ввел имя пользователя и пароль, вы можете сделать это, используя следующую команду:

git credential-cache exit

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

amitshree
источник
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"

Попробуйте еще раз нажать или потяните, чтобы git, и он попросит учетные данные. Введите действительные учетные данные для учетной записи репозитория. Выполнено

iamsurajdc
источник
3

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

Панель управления \ Учетные записи пользователей \ Диспетчер учетных данных

Там будет 2 вкладки в этом месте,

  1. Веб-учетные данные и 2. Windows учетные данные.

Нажмите на вкладку учетных данных Windows, и здесь вы можете увидеть свои сохраненные учетные данные github под заголовком «Общие учетные данные».

Вы можете удалить их отсюда и повторить клонирование - теперь будет запрошено имя пользователя / пароль, поскольку мы только что удалили сохраненные учетные данные из систем Windows 10

AADProgramming
источник
2

Чтобы очистить кэш Git Credentials Managers для Windows:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

или

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache
Крис Ф. Кэрролл
источник
2

Попробуйте это, когда ничего, как упомянуто выше, не работает для вас.

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

это будет удалять кэш каждые 3 секунды и запрашивать имя пользователя и пароль. Вы можете повторно запустить команду с увеличенными значениями времени ожидания.

маниш кумар
источник
1

В нашем случае очистка пароля в пользовательском файле .git-credentials сработала у нас.

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 (один для работы, другой для игры) и соответственно именованные удаленные хосты для решения контекстной аутентификации.

irbanana
источник
1

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

Script Это скрипт оболочки, запускаемый в Cygwin.

Works Это работает, потому что я использую частные git-репозитории, которые все аутентифицируются с одним и тем же паролем (вы, вероятно, не хотите зацикливаться с одинаковыми учетными данными, но вы можете использовать эту примерную /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
nicobo
источник
0

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

Муним
источник
2
он использует https, так что здесь нет ключа
CharlesB