Как отключить Git Credential Manager для Windows?

170

Я заметил, что в последней версии Git по умолчанию теперь появляется диалоговое окно «Git Credential Manager для Windows» вместо того, чтобы каждый раз запрашивать у меня пароль в приглашении Bash.

Я действительно ненавижу это поведение. Как я могу просто отключить его и вернуться к вводу пароля в оболочке Bash каждый раз?

Кстати, я не хочу, чтобы Git кэшировал мои учетные данные каким-либо образом , будь то учетные данные Windows или какой-либо внутренний демон. Я хочу отключить все кэширование учетных данных .

Еж
источник

Ответы:

211

Хорошо, я обнаружил, что вам нужно либо не устанавливать флажок «Git Credential Manager» во время установки Git для Windows, либо (после установки) запускать оболочку Bash от имени администратора и использовать git config --edit --systemдля удаления helper = managerстроки, чтобы она больше не регистрировалась как помощник по учетным данным.

Для получения бонусных баллов используйте git config --edit --globalи вставьте:

[core]
    askpass =

Чтобы отключить всплывающее окно OpenSSH учетные данные тоже.

Еж
источник
19
Спасибо за ответ. Для меня это был первый раз, чтобы использовать редактор. Если вы хотите сохранить изменения, нажмите клавишу выхода и введите: wq и нажмите ввод (запись / сохранение и выход).
Бен Бесуйен
1
Большое спасибо! Диспетчер учетных данных запутался с прокси-сервером моей работы, и это сделало работу с Sourcetree кошмаром. Отключение исправило проблему немедленно.
Джонни
1
и если: wq не работает, как в моем случае, используйте ctrl + z для отмены и выхода, но это, вероятно, сделает несколько резервных файлов для работы позже
Adeem
37
Или выбить его с собойgit config --system --unset credential.helper
Бен
4
Для тех, кто использует SourceTree, убедитесь, что используется «системная» версия GIT, а не встроенная. Tools -> Options -> Git,
Стеваникус
30

Я смог удалить Git Credential Manager для Windows, используя опцию удаления:

git-credential-manager.exe uninstall

Запустите эту команду в C:\Program Files\Git\mingw64\libexec\git-core

Ян Мерсер
источник
1
Это просто глохнет, и после того, как я git credential [fill|approve|reject]
нажму
2
@ ScottN ты бежишь, git-credential.exeно тебе нужно бежать git-credential-manager.exe.
Эйдан Райан
13

Другой вариант, который мне пришлось использовать с VSTS:

git config credential.modalprompt false --global

Стен Петров
источник
3
Спасибо! Я обнаружил, что это очень полезно при использовании ssh для удаленного подключения к производственному серверу: я не смог сделать это git pullиз-за отключения WCM. С этой опцией я наслаждаюсь обоими мирами: WCM при физическом соединении с сервером (или с удаленным рабочим столом) и возможностью извлечения из ssh-клиента.
cbuchart
9

Это не сработало для меня:

C:\Program Files\Git\mingw64\libexec\git-core
git-credential-manager.exe uninstall

Looking for Git installation(s)...
  C:\Program Files\Git

Updated your /etc/gitconfig [git config --system]
Updated your ~/.gitconfig [git config --global]

Removing from 'C:\Program Files\Git'.
  removal failed. U_U

Press any key to continue...

Но с --forceфлагом это сработало:

C:\Program Files\Git\mingw64\libexec\git-core
git credential-manager uninstall --force
08:21:42.537616 exec_cmd.c:236          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
e
08:21:42.538616 git.c:576               trace: exec: git-credential-manager uninstall --force
08:21:42.538616 run-command.c:640       trace: run_command: git-credential-manager uninstall --force

Looking for Git installation(s)...
  C:\Program Files\Git

Updated your /etc/gitconfig [git config --system]
Updated your ~/.gitconfig [git config --global]


Success! Git Credential Manager for Windows was removed! ^_^

Press any key to continue...

Я мог видеть этот след после того, как я бегу:

set git_trace=1

Также я добавил имя пользователя Git:

git config --global credential.username myGitUsername

Затем:

C:\Program Files\Git\mingw64\libexec\git-core
git config --global credential.helper manager

В конце я вставил в эту команду:

git config --global credential.modalPrompt false

Я проверяю, работает ли агент SSH - откройте окно Bash для запуска этой команды

eval "$(ssh-agent -s)"

Затем в папке users / yourName компьютера, где находится .ssh, добавьте соединение (все еще в Bash):

ssh-add .ssh/id_rsa

or

ssh-add ~/.ssh/id_rsa(if you are not in that folder)

Я проверил все настройки, которые я добавил выше:

C:\Program Files\Git\mingw64\libexec\git-core
git config --list
09:41:28.915183 exec_cmd.c:236          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-cor
e
09:41:28.917182 git.c:344               trace: built-in: git config --list
09:41:28.918181 run-command.c:640       trace: run_command: unset GIT_PAGER_IN_USE; LESS=FRX LV=-c less
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslbackend=openssl
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
credential.helper=manager
credential.modalprompt=false
credential.username=myGitUsername

И когда я сделал это git pushснова, мне пришлось добавить имя пользователя и пароль только в первый раз.

git push
Please enter your GitHub credentials for https://myGithubUsername@github.com/
username: myGithubUsername
password: *************
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 316 bytes | 316.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.

С тех пор git push, как я использую , у меня больше нет сообщения для ввода учетных данных Git.

D:\projects\react-redux\myProject (master -> origin) (budget@1.0.0)
λ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 314 bytes | 314.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/myGitUsername/myProject.git
   8d38b18..f442d74  master -> master

После этих настроек я тоже получил электронное письмо с сообщением:

 A personal access token (git: https://myGitHubUsername@github.com/
on LAP0110 at 25-Jun-2018 09:22) with gist and repo scopes was recently added
to your account. Visit https://github.com/settings/tokens for more information.
Питер Мортенсен
источник
6

У меня была эта проблема, и я только удалил файл git-credential-manager.exe из:

C:\Program Files\Git\mingw64\libexec\git-core
Генри Васкес
источник
6

Я хотел использовать диспетчер учетных данных для обычного использования, но у меня есть сценарии, в которых мне явно не нужны никакие подсказки git.exe. Вот как я вызываю Git из моих скриптов:

set GIT_TERMINAL_PROMPT=0
git -c core.askpass= -c credential.helper= <command> ...

Таким образом, скрипт всегда видит «правильную» настройку без запроса, не изменяя конфигурацию.

(Git для Windows 2.13.3)


Я нашел вариант, который также может пригодиться:

set GCM_INTERACTIVE=never
# Or: git config --global credential.interactive never

set GIT_TERMINAL_PROMPT=0
git.exe -c core.askpass= -c credential.helper=manager <command> ...

Но обратите внимание, что git.exe -c credential.interactive=never <command> ... это не работает (кажется, что эта -cштука не перенаправляется в Git Credential Manager для Windows или что-то еще).

Таким образом, вы можете использовать GCMfW, но он никогда не подскажет вам; он просто ищет учетные данные, которые могут быть очень полезны в неинтерактивных средах.

Мартин Ба
источник
5

Использование:

C:\Program Files\Git\mingw64\libexec\git-core                                                                       
git credential-manager uninstall --force    

Это работает в системах Windows. Я проверил это, и это сработало для меня.

Питер Мортенсен
источник
3

Может быть, проблема в Sourcetree .

  1. Перейдите в ИнструментыПараметры

  2. Снимите флажок «Проверять пульты по умолчанию на обновления каждые [10] минут»

  3. Перезапустите Sourcetree!

hatanooh
источник
1

и если: wq не работает, как в моем случае, используйте ctrl + z для отмены и выхода, но это, вероятно, сделает несколько резервных файлов для работы позже - Adeem 19 января в 9:14

Также обязательно запустите Git от имени администратора! В противном случае файл не будет сохранен (в моем случае).

user3437639
источник
1

Я столкнулся с той же проблемой в Ubuntu 18.10 (Космическая каракатица), которую я не смог удалить обычными средствами. Я использовал git config --global --unset credential.helper, и это, казалось, добилось цели.

беспричинный
источник
1

В папке «user» c: // user посмотрите файл «.gitconfig», затем удалите строку http и прокси.

user3642831
источник
1

Чтобы предотвратить использование диалога git config --global credential.modalPrompt false, это приведет запросы к консоли.

Махди Афзал
источник
0

Вы можете просто удалить Диспетчер учетных данных.

C:\Users\<USER>\AppData\Local\Programs\Git\mingw64\libexec\git-core
Кайо Борхес
источник