Como desabilito o Git Credential Manager para Windows?

170

Percebo que, na versão mais recente do Git, o padrão agora é exibir uma caixa de diálogo "Git Credential Manager para Windows" em vez de me solicitar a senha sempre no prompt do Bash.

Eu realmente odeio esse comportamento. Como posso desativá-lo e voltar a inserir a senha no shell Bash todas as vezes?

A propósito, não quero que o Git armazene minhas credenciais de forma alguma , seja através de credenciais do Windows ou de algum daemon interno. Eu quero desativar todo o cache de credenciais .

Jez
fonte

Respostas:

211

OK, descobri que você precisa evitar marcar a caixa de seleção "Git Credential Manager" durante o instalador do Git for Windows ou (após a instalação) executar o shell Bash como administrador e usar git config --edit --systempara remover a helper = managerlinha para que não seja mais registrada como um auxiliar de credencial.

Para pontos de bônus, use git config --edit --globale insira:

[core]
    askpass =

Para desativar também o pop-up de credenciais do OpenSSH.

Jez
fonte
19
Obrigado pela resposta. Para mim, foi a primeira vez que usei o editor. Se você deseja salvar as alterações, pressione a tecla Escape e digite: wq e pressione enter (escreva / salve e saia).
Ben Besuijen
1
Muito Obrigado! O gerente de credenciais ficou confuso com o servidor proxy do meu trabalho e tornou o trabalho com o Sourcetree um pesadelo. Desativá-lo corrigiu o problema imediatamente.
Johnny
1
e se: wq não funcionar como meu caso, use ctrl + z para abortar e sair, mas provavelmente
criarão
37
Ou nocauteá-lo comgit config --system --unset credential.helper
Ben Butzer
4
Para aqueles que usam o SourceTree, verifique se a versão "sistema" do GIT está sendo usada, e não a incorporada. Tools -> Options -> Git.
Stevanicus
30

Consegui desinstalar o Git Credential Manager para Windows usando a opção de desinstalação:

git-credential-manager.exe uninstall

Execute este comando em C:\Program Files\Git\mingw64\libexec\git-core

Ian Mercer
fonte
1
Isso só barracas e depois que eu pressionar ctrl-c, cospe este uso:git credential [fill|approve|reject]
ScottN
2
@ ScottN você está executando, git-credential.exemas precisa executar git-credential-manager.exe.
Aidan Ryan
13

Outra opção que tive que usar com o VSTS:

git config credential.modalprompt false --global

Sten Petrov
fonte
3
Obrigado! Achei muito útil ao usar o ssh para conectar-me remotamente ao meu servidor de produção: não consegui fazer isso por git pullcausa do descarte do WCM. Com essa opção, desfruto dos dois mundos: WCM quando conectado fisicamente ao servidor (ou à Área de Trabalho Remota) e poder extrair de um cliente ssh.
Cbuchart 28/09/19
9

Não funcionou para mim:

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...

Mas com a --forcebandeira funcionou:

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...

Eu pude ver esse rastreamento depois de executar:

set git_trace=1

Também adicionei o nome de usuário do Git:

git config --global credential.username myGitUsername

Então:

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

No final, eu coloquei este comando:

git config --global credential.modalPrompt false

Verifico se o agente SSH está em execução - abra uma janela do Bash para executar este comando

eval "$(ssh-agent -s)"

Em seguida, na pasta users / yourName do computador onde está .ssh, adicione uma conexão (ainda no Bash):

ssh-add .ssh/id_rsa

or

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

Eu verifiquei todas as configurações adicionadas acima:

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

E quando fiz git pushnovamente, tive que adicionar nome de usuário e senha apenas pela primeira vez.

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.

Desde então git push, não tenho mais a mensagem para inserir minhas credenciais do 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

Após essas configurações, também recebi um email com a mensagem:

 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.
Peter Mortensen
fonte
6

Eu tive esse problema e removi o arquivo git-credential-manager.exe de:

C:\Program Files\Git\mingw64\libexec\git-core
Henry Vásquez
fonte
6

Eu queria usar o gerenciador de credenciais para uso normal, mas tenho scripts nos quais obviamente não quero nenhum aviso git.exe. É assim que invoco o Git nos meus scripts:

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

Dessa forma, o script sempre vê a configuração "correta" sem aviso, sem precisar adaptar nenhuma configuração.

(Git para Windows 2.13.3)


Uma variação que achei que também pode ser útil é definir:

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> ...

Mas observe que git.exe -c credential.interactive=never <command> ... isso não funciona (parece que a -ccoisa não foi roteada para o Git Credential Manager para Windows ou o que for).

Dessa forma, você pode usar o GCMfW, mas ele nunca solicitará; apenas pesquisará as credenciais, o que pode ser muito útil em ambientes não interativos.

Martin Ba
fonte
5

Usar:

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

Isso funciona em sistemas Windows. Eu testei e funcionou para mim.

Peter Mortensen
fonte
3

Talvez o problema seja Sourcetree .

  1. Vá para FerramentasOpções

  2. Desmarque a opção "Verifique os controles remotos padrão para atualizações a cada [10] minutos"

  3. Reinicie o Sourcetree!

hatanooh
fonte
1

e se: wq não funcionar como meu caso, use ctrl + z para abortar e sair, mas provavelmente criarão vários arquivos de backup para trabalhar posteriormente - Adeem 19 de janeiro às 9:14

Certifique-se também de executar o Git como administrador! Caso contrário, o arquivo não será salvo (no meu caso).

user3437639
fonte
1

Eu encontrei o mesmo problema no Ubuntu 18.10 (Cosmic Cuttlefish), incapaz de remover usando qualquer meio normal. Eu usei git config --global --unset credential.helper, e isso parecia funcionar.

devassa
fonte
1

Na pasta "user" c: // user, consulte o arquivo ".gitconfig" e remova a linha http e proxy.

user3642831
fonte
1

Para impedir o uso do diálogo git config --global credential.modalPrompt false, isso direcionará as consultas para o console.

Mahdi Afzal
fonte
0

você pode simplesmente excluir o Credential Manager.

C:\Users\<USER>\AppData\Local\Programs\Git\mingw64\libexec\git-core
Caio Borges
fonte