Удалить учетные данные из Git
Я работаю с несколькими репозиториями, но в последнее время я просто работал в нашем внутреннем, и все было замечательно.
Сегодня я должен был зафиксировать и вставить код в другой, но у меня возникли некоторые проблемы.
$ 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'
во избежание кеширования учетных данных...
Ничто не похоже на работу; у кого-нибудь есть идея получше?
41 ответ
Кэш учетных данных 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, так как он предлагает интерфейс, более управляемый графическим интерфейсом. Помощник менеджера предлагает тот же графический интерфейс, что и в магазине.
Извлечение из руководства Windows, детализирующего панель хранилища учетных данных Windows:
Откройте учетные записи пользователей, нажав кнопку "Пуск" Изображение кнопки "Пуск", нажав "Панель управления", "Учетные записи пользователей и безопасность семьи" (или "Учетные записи пользователей, если вы подключены к сетевому домену"), а затем нажмите "Учетные записи пользователей". На левой панели щелкните Управление своими учетными данными.
Если эта проблема возникает на компьютере с Windows, выполните следующие действия.
- Перейти к диспетчеру учетных данных
- Перейти к учетным данным Windows
- Удалить записи в разделе Общие учетные данные
- Попробуйте подключиться снова. На этот раз он должен запросить у вас правильное имя пользователя и пароль.
Повторите:
$ git config credential.helper store
И тогда вам будет предложено ввести свои учетные данные снова.
ПРЕДУПРЕЖДЕНИЕ
С помощью этого помощника ваши пароли будут храниться в незашифрованном виде на диске
Я столкнулся с той же проблемой, что и ОП. Он брал мои старые учетные данные Git, хранящиеся где-то в системе, и я хотел использовать Git со своими новыми учетными данными, поэтому я выполнил команду
$ git config --system --list
Показало
credential.helper=manager
Всякий раз, когда я выступал git push
это заняло мое старое имя пользователя, которое я давно установил, и я хотел использовать новую учетную запись GitHub для отправки изменений. Позже я обнаружил, что мои старые учетные данные GitHub были сохранены в Панели управления → Учетные записи пользователей → Диспетчер учетных данных → Управление учетными данными Windows.
Я только что удалил эти учетные данные и когда я выполнил git push
он попросил у меня учетные данные GitHub, и это работало как шарм.
Попробуйте использовать приведенную ниже команду.
git credential-manager
Здесь вы можете получить различные параметры для управления своими учетными данными (проверьте экран ниже).
Или вы можете даже напрямую попробовать эту команду:
git credential-manager uninstall
Это снова начнет запрашивать пароли при каждом запросе взаимодействия с сервером.
Я нашел то, что сработало для меня. Когда я написал свой комментарий к OP, мне не удалось проверить системный конфигурационный файл:
git config --system -l
показывает
credential.helper=!github --credentials
линия. Я снял это с
git config --system --unset credential.helper
и теперь учетные данные забыты.
Эта ошибка появляется, когда вы используете несколько учетных записей Git на одном компьютере.
Если вы используете macOS, вы можете удалить сохраненные учетные данные github.com.
Пожалуйста, следуйте приведенным ниже инструкциям, чтобы удалить учетные данные github.com.
git config --list
покажет credential.helper = manager
(это на машине с Windows)
Чтобы отключить это кэшированное имя пользователя / пароль для вашей текущей локальной папки git, просто введите
git config credential.helper ""
Таким образом, git будет запрашивать пароль каждый раз, игнорируя то, что сохранено внутри "менеджера".
Вы должны обновить его в вашем диспетчере учетных данных.
Перейдите в Панель управления> Учетные записи пользователей> Диспетчер учетных данных> Учетные данные Windows. Вы увидите учетные данные Git в списке (например, git:https://). Нажмите на него, обновите пароль и выполните команду git pull/push из вашего Git bash, и он не выдаст больше сообщений об ошибках.
В моем случае Git использует Windows для хранения учетных данных.
Все, что вам нужно сделать, это удалить сохраненные учетные данные, хранящиеся в вашей учетной записи Windows:
В Windows 2003 Server с "wincred"* ни один из других ответов не помог мне. Я должен был использовать cmdkey
,
cmdkey /list
перечисляет все сохраненные учетные данные.cmdkey /delete:Target
удаляет учетные данные с именем "Target".
(* Под "wincred" я имею в виду git config --global credential.helper wincred
)
При использовании последней версии git для Windows на Windows 10 Professional у меня возникла похожая проблема, из-за которой у меня есть две разные учетные записи GitHub, а также учетная запись Bitbucket, поэтому некоторые проблемы с VS2017, расширениями git и git bash стали немного запутанными.
Сначала я проверил, как git обрабатывает мои учетные данные с помощью этой команды (запустите git bash с повышенными командами, или вы получите ошибки):
git config --list
Я нашел запись "Диспетчер учетных данных", поэтому я нажал на кнопку "СТАРТ"> набрал "Диспетчер учетных данных" и щелкнул левой кнопкой мыши на значке кричать "Безопасный менеджер диспетчера учетных данных", который запустил приложение. Затем я нажал на вкладку "Учетные данные Windows" и нашел запись для моей текущей учетной записи git, которая оказалась Bitbucket, поэтому я удалил эту учетную запись.
Но это не сработало, поэтому следующим шагом было сбросить учетные данные, и я сделал это из каталога репозитория на моем ноутбуке, который содержит проект GitHub, который я пытаюсь перенести на удаленный компьютер. Я набрал следующую команду:
git config --system --unset credential.helper
Затем я сделал git push и мне было предложено ввести имя пользователя GitHub, которое я ввел (правильное, которое мне было нужно), а затем связанный пароль и все было выдвинуто правильно.
Я не уверен, насколько серьезной будет эта проблема, большинство людей, вероятно, работают с одним репозиторием, но мне приходится работать с несколькими и использовать разных провайдеров, поэтому может снова столкнуться с этой проблемой.
Если вы хотите, чтобы git забыл старые сохраненные учетные данные и повторно ввел имя пользователя и пароль, вы можете сделать это с помощью следующей команды:
git credential-cache exit
После выполнения вышеуказанной команды, если вы попытаетесь нажать что-нибудь, появится возможность ввести имя пользователя и пароль.
В случае использования Git Credential Manager для Windows (что обычно делают текущие версии):
git credential-manager clear
Это было добавлено в середине 2016 года. Чтобы проверить, используется ли менеджер учетных данных:
git config --global credential.helper
→ manager
Получилась та же ошибка при выполнении 'git pull', и именно так я это исправил.
- Изменить репо на HTTPS
- Запустите команду 'git config --system --unset credential.helper'
- Запустите команду 'git config --system --add credential.helpder manager'
- Тестовая команда 'git pull'
- Введите учетные данные в появившемся окне входа.
- Git pull успешно завершен.
- Идти к
C:\Users\<current-user>
- проверить
.git-credentials
файл - Удалить содержимое или изменить в соответствии с вашими требованиями
- Перезапустите свой терминал
Если ваши учетные данные хранятся в помощнике по учетным данным (обычно это так), переносимый способ удалить пароль, сохраняющийся для определенного хоста, - это вызвать git credential reject
:
в одной строке:
$ echo "url=https://appharbor.com" | git credential reject
или в интерактивном режиме:
$ git credential reject protocol=https host=gitlab.com username=me@example.com ↵
- â † µ - это символ Enter, просто дважды нажмите клавишу Enter в конце ввода, не копируйте / вставляйте его
- Имя пользователя не распознается wincred, поэтому избегайте фильтрации по имени пользователя в Windows
После этого, чтобы ввести новый пароль, введите git fetch
.
Необходимо войти с соответствующим GitHub username
а также password
Очистить логин и пароль в windows
Панель управления \ Учетные записи пользователей \ Диспетчер учетных данных
Редактировать учетные данные Windows
Удалите существующего пользователя и теперь перейдите в командную строку, напишите команду push, которая показывает всплывающее окно github, чтобы ввести username
/email
а также password
,
Теперь мы можем нажать на код после переключения пользователя.
В моем случае я не смог найти учетные данные, сохраненные в диспетчере учетных данных Windows (Windows 7).
Я смог сбросить свои учетные данные, выполнив
git config --global credential.helper wincred
Мэри была честно признательна, чтобы увидеть, уничтожит ли это мои полномочия, и это действительно сработало.
Удалите эту строку из файла.gitconfig, который находится в папке пользователя, в данный момент вошедшего в систему Windows:
[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"
Это сработало для меня, и теперь, когда я нажимаю на пульт, он снова запрашивает мой пароль.
Этот подход сработал для меня и не должен зависеть от ОС. Это было немного жестко, но было быстро и позволило мне повторно ввести учетные данные.
Просто найдите удаленный псевдоним, для которого вы хотите повторно ввести учетные данные.
$ git remote -v
origin https://bitbucket.org/org/~username/your-project.git (fetch)
origin https://bitbucket.org/org/~username/your-project.git (push)
Скопируйте путь к проекту (https://bitbucket.org/org/~username/your-project.git
)
Затем удалите пульт
$ git remote remove origin
Затем добавьте его обратно
$ git remote add origin https://bitbucket.org/org/~username/your-project.git
По крайней мере в Windows git remote show [remote-name]
будет работать, например
git remote show origin
Для пользователей MacOS:
Эта ошибка появляется, когда вы используете несколько учетных записей Git на одном компьютере.
Пожалуйста, следуйте приведенным ниже инструкциям, чтобы удалить учетные данные github.com.
- Перейти к Finder
- Перейти к приложениям
- Перейти в папку "Утилиты"
- Открытый доступ к брелку
Выберите github.com и щелкните по нему правой кнопкой мыши.
Удалить "github.com"
Попробуйте еще раз нажать или потяните, чтобы git, и он попросит учетные данные. Введите действительные учетные данные для учетной записи репозитория. Готово
Никакой ответ не помог мне. Но вот что в итоге сработало для меня:
rm -rf ~/.git-credentials
Это удалит любые учетные данные! Когда вы используете новый
git
команда, вам будет предложено ввести пароль!
Вы можете удалить строку credential.helper=!github --credentials
из следующего файла C:\Program Files\Git\mingw64\etc\gitconfig
для того, чтобы удалить учетные данные для Git
Построение из ответа @patthoyts с высоким голосом ( /questions/12539998/udalit-uchetnyie-dannyie-iz-git/12540000#12540000):
Его ответ использует, но не объясняет конфиги "локальный" или "глобальный" или "системный". Официальная документация 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 (один для работы, другой для игры) и соответственно именованными удаленными хостами для решения контекстной аутентификации тоже.
Резюме исходного вопроса
- работа с git в Windows
- работа с несколькими репозиториями на GitHub
- неправильные учетные данные, используемые для другого репозитория GitHub
Хотя в заголовке написано "Удалить учетные данные", описание приводит меня к предположению, что у вас может быть несколько учетных записей на GitHub, например, для связанных с работой или частных проектов. (По крайней мере, эта проблема заставила меня найти эту тему.) Если так, читайте дальше, иначе игнорируйте ответ, но он может пригодиться в какой-то момент.
Причина
Git-Credential-Manager от Microsoft (сокращенно GCM), поставляемый с git, по умолчанию хранит учетные данные для каждого хоста. Это можно проверить, проверив диспетчер учетных данных Windows (см. Другие ответы, как получить к нему доступ в английской, французской и немецкой версиях Windows). Поэтому работа с несколькими учетными записями на одном хосте (здесь github.com) по умолчанию невозможна.
Решение
Настройте GCM, чтобы включить дополнительную информацию для каждой записи учетных данных. Я рекомендую указать путь HTTP(S) [репозиторий], чтобы иметь возможность использовать отдельную учетную запись для каждого репозитория.
Для всех возможных хостов:
git config --global credential.useHttpPath true
Только для github.com:
git config --global credential.github.com.useHttpPath true
Посмотрите документацию GCM и, возможно, вы захотите указать что-то другое.
Пожалуйста, запустите следующую команду -
git config --global credential.helper cache
а затем запустите любую команду git, например git pull, она запросит имя пользователя и пароль. Введите данные и, если вы хотите сохранить свои учетные данные git, выполните следующую команду -
git config --global credential.helper store
В нашем случае очистка пароля в пользовательском файле.git-credentials сработала у нас.
c:\users\[username]\.git-credentials
Для меня наконец-то было решено использовать рабочий стол GitHub, перейти в настройки репозитория и удалить user:pass@ из URL-адреса репозитория. Затем я предпринял попытку отправки из командной строки, и мне было предложено ввести учетные данные для входа. После того, как я положил их, все вернулось к норме. Работают и Visual Studio, и командная строка, и, конечно, рабочий стол GitHub.
GitHub Desktop-> Репозиторий-> Настройки репозитория-> Удаленная вкладка
Изменить основной удаленный репозиторий (источник) с:
https://pork@muffins@github.com/MyProject/MyProject.git
Для того, чтобы:
https://github.com/MyProject/MyProject.git
Нажмите "Сохранить"
Учетные данные будут очищены.