Remover credenciais do Git

623

Estou trabalhando com vários repositórios, mas ultimamente estava apenas trabalhando em nosso interno e tudo foi ótimo.

Hoje tive que confirmar e enviar código para outro, mas estou tendo alguns problemas.

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

Não há nada que eu possa fazer, que traga a entrada de senha novamente.

Como posso redefinir as credenciais do meu sistema para que o Git me peça a senha desse repositório?

Eu tentei:

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

para desabilitar a senha

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

para evitar o cache de credenciais ...

Nada parece funcionar; Alguém tem uma idéia melhor?

balexandre
fonte
Você tem um ~/.netrcarquivo?
robinst
2
@robinst é uma máquina Windows e eu não consigo encontrar esse arquivo, nem mesmo de Git Bash ...
balexandre
@balexandre para uma máquina Windows, prefiro usar o novo auxiliar de credencial (git 1.8.3) netrc, que armazenaria várias credenciais em um arquivo criptografado . É melhor do que digitar sua senha todas as vezes para cada sessão, pois o cache apenas "armazena em cache" a senha por um determinado período. Veja um exemplo completo aqui .
VonC
Eu não tenho .netrc. Eu tenho um arquivo em ~ (C: \ Users \ Myself) chamado .git-credentials, mas apagá-lo não funcionou, ainda estou logado no Git Shell. Além disso, o Gerenciador de credenciais do painel de controle não parece estar armazenando nada. Os arquivos de configuração locais e globais do Git parecem bons. Eu herdei minha estação de trabalho de um funcionário que foi embora, para que ele configurasse algum mecanismo não-ortodoxo de armazenamento em cache de credenciais que eu não tenho idéia de como desligar. Espero que esse comportamento NÃO seja o padrão do Git Windows. No Mac, o cache de credenciais é o padrão, mas pelo menos aparece no Acesso às Chaves.
damix911
A resposta mais completa que também funciona em Linux, Windows e Mac OS X ver stackoverflow.com/a/39944557/3906760
MrTux

Respostas:

654

Se esse problema ocorrer em uma máquina Windows, faça o seguinte.

  • Vá para o Credential Manager
  • Vá para Credenciais do Windows
  • Exclua as entradas em Credenciais genéricas
  • Tente conectar-se novamente. Desta vez, ele deve solicitar o nome de usuário e a senha corretos.

Vá para o Credential Manager

Vá para Credenciais do Windows e exclua as entradas em Credenciais genéricas

Venkataramana Madugula
fonte
4
Isso é relevante apenas se você credential.helper=manager. Para testar esse tipo git config --list. Se estiver definido como store, as credenciais não serão armazenadas no armazenamento de credenciais, mas serão armazenadas sem criptografia.
Liam
3
Eu só tive que excluir a credencial nomeada git:https://github.come fui solicitado a inserir meu nome de usuário / senha na próxima vez em que clonei um repo usando PyCharm. Eu tinha mais de uma conta no Github e a conta errada foi armazenada em cache.
Dotcomly 17/01/19
22
Se alguém está pesquisando isso em uma máquina localizada alemã, é "Anmeldeinformationsverwaltung" no caminho Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltung.
Davidenke
3
Como alternativa, você pode alterar o usuário / senha no Credential Manager. Isso funcionou para mim também
Daniel Lerps
A exclusão das credenciais resolveu meu 403erro via Bitbucket.
Eido95
673

O cache de credenciais do Git executa um processo daemon que armazena em cache suas credenciais na memória e as distribui sob demanda. Portanto, matar o processo git-credential-cache - daemon descarta tudo isso e resulta em solicitar novamente sua senha se você continuar a usá-la como a opção cache.helper.

Você também pode desativar o uso do cache de credenciais do Git usando git config --global --unset credential.helper. Em seguida, redefina isso e você continuará a ter as credenciais em cache disponíveis para outros repositórios (se houver). Você também pode precisar fazergit config --system --unset credential.helper isso se isso tiver sido definido no arquivo de configuração do sistema (por exemplo, Git for Windows 2).

No Windows, é melhor usar o assistente de gerente ( git config --global credential.helper manager). Isso armazena suas credenciais no armazenamento de credenciais do Windows, que possui uma interface do Painel de Controle, na qual você pode excluir ou editar suas credenciais armazenadas. Com esta loja, seus detalhes são protegidos pelo login do Windows e podem persistir em várias sessões. O auxiliar de gerente incluído no Git para Windows 2.x substituiu o auxiliar de wincred anterior que foi adicionado no Git for Windows 1.8.1.1. Um auxiliar semelhante chamado winstore também está disponível online e foi usado com o GitExtensions, pois oferece uma interface mais orientada a GUI. O auxiliar do gerente oferece a mesma interface GUI que o winstore .

Extraia da página de suporte do Windows 10 detalhando o gerenciador de credenciais do Windows:

Para abrir o Credential Manager, digite "credential manager" na caixa de pesquisa na barra de tarefas e selecione Credential Manager Control panel .

E, em seguida, selecione Credenciais do Windows para editar (= remover ou modificar) as credenciais git armazenadas para um determinado URL.

patthoyts
fonte
197
Eu encontrei o painel de controle do Windows Credencial na Control Panel\User Accounts\Credential Managersob Windows 7
Steve jarros
2
A interrupção do processo não deixa vestígios em algum lugar, para que a senha ainda possa ser acessada? De acordo com o manual do git, eles são armazenados em "texto simples".
Ufos
1
No Windows 8.1, as "Credenciais do Windows" estavam em Credenciais genéricas e git: gitlab.com ou seu servidor git de sua escolha.
21416 Jeff
5
No Windows 8/10, as configurações detalhadas da conta do usuário estão localizadas no painel de controle "clássico", não no aplicativo "Configurações" (interface do usuário moderna). Apenas para evitar confusão.
precisa saber é o seguinte
1
no Windows 10 Vá para Painel de controle \ Todos os itens do painel de controle \ Gerenciador de credenciais. Pode haver uma credencial genérica para o GitHub. Você pode atualizar o nome de usuário e a senha lá.
Eldhose Abraham
155

Digite novamente:

$ git config credential.helper store

E então você será solicitado a inserir suas credenciais novamente.

ATENÇÃO

O uso desse ajudante armazenará suas senhas não criptografadas no disco

Fonte: https://git-scm.com/docs/git-credential-store

aaafly
fonte
35
este comando não pedindo para entrar minhas credenciais de novo, este comando não está fazendo nada
Shirish Herwade
3
@ShirishHerwade tente git pull, então você verá a tela de prompt
ismailcem
2
@jkokorian Para desfazer este comando, exclua as linhas relevantes de .git/config.
Zenadix
110

Eu enfrentei o mesmo problema que o OP. Como minhas credenciais antigas do Git estavam armazenadas em algum lugar do sistema e eu queria usar o Git com minhas novas credenciais, executei o comando

$ git config --system --list

Mostrou

credential.helper=manager

Sempre que eu realizava git push, estava usando meu nome de usuário antigo, que eu recolhi há muito tempo, e queria usar uma nova conta no GitHub para fazer alterações. Mais tarde, descobri que minhas credenciais antigas da conta do GitHub estavam armazenadas em Painel de ControleContas de UsuárioGerenciador de CredenciaisGerenciar Credenciais do Windows .

Gerenciar credenciais do Windows

Acabei de remover essas credenciais e, quando a realizei git push, solicitou minhas credenciais do GitHub, e funcionou como um encanto.

Mourya
fonte
Boa ilustração do recente Git Credential Manager ( github.com/Microsoft/Git-Credential-Manager-for-Windows ), que funciona armazenando credenciais ( github.com/Microsoft/Git-Credential-Manager-for-Windows/ edições /… ) +1
VonC 20/09/16
1
@VonC Levei um dia para descobrir isso, pois eu não estava ciente desse mecanismo de armazenamento de credenciais.
Mourya
É bastante recente, de fato. Obrigado por mencionar aqui.
VonC 20/09/16
Esta é provavelmente a melhor resposta que a "aceita", o que para mim implica remover todas as credenciais. Definitivamente me ajudou.
VictorLegros
52

Tente usar o comando abaixo.

git credential-manager

Aqui você pode obter várias opções para gerenciar suas credenciais (consulte a tela abaixo).

Digite a descrição da imagem aqui

Ou você pode até tentar diretamente este comando:

git credential-manager uninstall

Isso começará a solicitar senhas novamente em cada solicitação de interação do servidor.

Himanshu Aggarwal
fonte
10
Por que eu estou recebendo #git: 'credential-manager' is not a git command. See 'git --help'.
29417 Saikat
2
Não tenho certeza, por que não está funcionando para você, mas mesmo na versão mais recente do git, está disponível. Por favor, consulte este link para mais informações - git-scm.com/book/gr/v2/Git-Tools-Credential-Storage
Himanshu Aggarwal
3
Got 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.(com o bom U_Uemoji do nada :))
jeromej
1
A única solução que funcionou para mim no Windows com o GitBash.
Alain.janinm
talvez um aparte, mas eu instalei o git via choco, e esse método [uninstall] foi bom para puxar um repositório em um computador implantado sem armazenar credenciais
beep_check 17/04
32

Eu encontrei algo que funcionou para mim. Quando escrevi meu comentário para o OP, não verifiquei o arquivo de configuração do sistema:

git config --system -l

mostra um

credential.helper=!github --credentials

linha. Desativei com

git config --system --unset credential.helper

e agora as credenciais são esquecidas.

damix911
fonte
2
Além disso, pode ser necessário executar o comando sugerido de maneiras semelhantes de duas a três vezes se você tiver configurado alguns auxiliares de credenciais. git config --global --unset credential.helpere talvez apenas git config --unset credential.helperno seu repositório, se você o definiu explicitamente lá.
precisa saber é o seguinte
obrigado pela solução. Apenas um detalhe: no meu caso, tive que iniciar o prompt de comando como administrador
A.Joly
30

No meu caso, o Git está usando o Windows para armazenar credenciais.

Tudo o que você precisa fazer é remover as credenciais armazenadas na sua conta do Windows:

Menu de credenciais do Windows

SoliQuiD
fonte
1
Como isso difere desta resposta ? ou este ?
Liam
20
git config --list

será exibido credential.helper = manager(isso é em uma máquina Windows)

Para desativar esse nome de usuário / senha em cache para sua pasta git local atual, basta digitar

git config credential.helper ""

Dessa forma, o git solicitará sempre a senha, ignorando o que é salvo dentro do "gerenciador".

Zhe Hu
fonte
Eu tenho o erro abaixo, git: 'credential-' is not a git command. See 'git --help'.mas por segurança, estou votando esta resposta porque é a única que me levou a ser solicitada uma nova senha. Eu estou querendo saber, no entanto, se isso não é apenas mascarando o problema (se a senha realmente removido?)
Ribamar
Não: rm -rf ~/.git-credentialssim. Note-se que ele pode variar ( git help credential-store)
Ribamar
desculpe, isso realmente não funciona. Ele solicitará a senha mais uma vez e a armazenará novamente. removeria meu voto positivo, se permitido.
Ribamar
git config --unset credential.helperlimpa a entrada. Essa resposta apenas define como string vazia e produz o erro que o @ribamar descreveu nos comentários.
Dark Castle
15

No Windows 2003 Server com "wincred" *, nenhuma das outras respostas me ajudou. Eu tive que usar cmdkey.

  • cmdkey /list lista todas as credenciais armazenadas.
  • cmdkey /delete:Target exclui a credencial com o nome "Destino".

cmdkey / list;  cmdkey / delete: Target

(* Por "wincred", quero dizer git config --global credential.helper wincred)

ericbn
fonte
Sim, cmdkeyé a contraparte da linha de comando para as credenciais do Windows descritas na resposta escolhida.
nicobo 21/04
15

Este erro aparece quando você está usando várias contas Git na mesma máquina.

Se você estiver usando o macOS, poderá remover as credenciais salvas do github.com .

Siga as etapas abaixo para remover as credenciais do github.com .

  1. Acesso ao chaveiro aberto
  2. Encontre o github
  3. Selecione o github.com e clique com o botão direito nele
  4. Excluir "github.com"
  5. Tente novamente Empurrar ou Puxar para git e solicitará as credenciais.
  6. Digite credenciais válidas para a conta do repositório.
  7. Feito

    insira a descrição da imagem aqui

Pratik Patel
fonte
Obrigado, isso está funcionando perfeitamente no mac os
babygame0ver 28/04
13

Precisa fazer login com o respectivo github usernameepassword

Para limpar o nome de usuário e a senha no Windows

Painel de controle \ Contas de usuário \ Credential Manager

Edite as credenciais do Windows

Remova o usuário existente e agora vá ao prompt de comando, escreva o comando push que mostra um pop-up do github para inserir o username/ emaile password.

Agora somos capazes de enviar o código depois de mudar de usuário.

Amit K
fonte
13

Tenho o mesmo erro ao fazer um 'git pull' e foi assim que eu o corrigi.

  1. Alterar repo para HTTPS
  2. Comando de execução git config --system --unset credential.helper
  3. Comando de execução git config --system --add credential.helper manager
  4. Comando de teste git pull
  5. Digite credenciais na janela de login exibida.
  6. Git pull concluído com sucesso.
Amer Bashoeb
fonte
--sistema? E o --global? E quanto a nenhum escopo? O que significa o escopo da configuração?
Masterxilo
Apenas com o passo 1 resolvi meu problema.
Zzxwill 02/10/19
11

Remova esta linha do seu arquivo .gitconfig localizado na pasta de usuário atualmente conectado do Windows:

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

Isso funcionou para mim e agora, quando pressiono para o controle remoto, solicita minha senha novamente.

Liviu M.
fonte
11

Você precisa atualizá-lo em seu Credential Manager.

Vá para Painel de Controle> Contas de Usuário> Credential Manager> Credenciais do Windows. Você verá as credenciais do Git na lista (por exemplo, git: https: //). Clique nele, atualize a senha e execute o comando git pull / push a partir do seu Git bash e ele não emitirá mais mensagens de erro.

ChiragBhalgami
fonte
10

Usando a versão mais recente do git para Windows no Windows 10 Professional e eu tive um problema semelhante, pelo qual tenho duas contas GitHub diferentes e também uma conta Bitbucket, para que as coisas ficassem um pouco confusas para o VS2017, extensões git e git bash.

Primeiro verifiquei como o git estava lidando com minhas credenciais com este comando (execute o git bash com comandos elevados ou você obterá erros):

git config --list

Encontrei a entrada Credential Manager e, em seguida, cliquei no botão INICIAR> digitei o Credential Manager e cliquei com o botão esquerdo do mouse no ícone seguro amarelo do gerenciador de credenciais que iniciou o aplicativo. Em seguida, cliquei nas guias Credenciais do Windows e localizei a entrada da minha conta atual do git que era Bit-bucket, então excluí-a.

Mas como não funcionou, o próximo passo foi desabilitar as credenciais e fiz isso no diretório do repositório do meu laptop que contém o projeto GitHub que estou tentando enviar para o controle remoto. Digitei o seguinte comando:

git config --system --unset credential.helper

Então eu fiz um push do git e fui solicitado a fornecer um nome de usuário do GitHub que eu digitei (o correto que eu precisava) e, em seguida, a senha associada e tudo foi enviado corretamente.

Não sei ao certo quanto de um problema isso está ocorrendo a maioria das pessoas provavelmente trabalha no repositório único, mas tenho que trabalhar em vários e usando provedores diferentes, para que possam encontrar esse problema novamente.

Tahir Khalid
fonte
trabalhou para mim .. obrigado
Krishnamoorthy Acharya
8

No meu caso, não consegui encontrar as credenciais salvas no Windows Credential Manager (Windows 7).

Consegui redefinir minhas credenciais executando

git config --global credential.helper wincred

Honestamente, foi uma saudação a Mary ver se isso apagaria minhas credenciais e realmente funcionou.

Jeff LaFay
fonte
Isso funcionou para mim; NÃO tive uma entrada no Credential Manager para excluir.
precisa saber é o seguinte
7

Você pode remover a linha credential.helper=!github --credentialsdo arquivo a seguir C:\Program Files\Git\mingw64\etc\gitconfigpara remover as credenciais do git

Yoan Pumar
fonte
7
  1. Vamos para C:\Users\<current-user>
  2. verifique se há .git-credentialsarquivo
  3. Excluir conteúdo ou modificar de acordo com sua exigência
  4. Reinicie seu terminal
Dinesh Patil
fonte
a única solução que funcionou para mim
Wachburn
7

No Windows, pelo menos, git remote show [remote-name]funcionará, por exemplo

git remote show origin
Jason S
fonte
Não sei por que o voto negativo. Isso funciona. Eu fico preso com todo o resto.
Jason S
... e usei novamente hoje, com sucesso. Toda vez que altero minha senha no trabalho, preciso fazer isso.
Jason S
2
Trabalhou um charme para mim.
IronAces 07/06/19
O mesmo aqui. Você nem sequer tem que ser em um diretório do repositório
Nicola Musatti
6

Se você quiser que o git esqueça as credenciais salvas antigas e insira novamente o nome de usuário e a senha, faça isso usando o comando abaixo:

git credential-cache exit

Depois de executar o comando acima, se você tentar pressionar qualquer coisa, ele fornecerá a opção de inserir nome de usuário e senha.

amitshree
fonte
3

O que finalmente corrigiu isso para mim foi usar a área de trabalho do GitHub, acessar as configurações do repositório e remover user: pass @ do URL do repositório. Em seguida, tentei um push na linha de comando e solicitei credenciais de login. Depois que eu os coloquei, tudo voltou ao normal. O Visual Studio e a linha de comando estão funcionando e, é claro, a área de trabalho do GitHub.

Área de trabalho do GitHub-> Repositório-> Configurações do Repositório-> guia Remoto

Altere o Repositório Remoto Principal (origem) de:

https: //pork@[email protected]/MyProject/MyProject.git

Para:

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

Clique em "Salvar"

As credenciais serão limpas.

Nick Pirocanac
fonte
Redefinir a origem para a mesma na linha de comando do Windows resolveu meu problema. Estou usando o GitLab, então não pude usar o GitHub Desktop para isso.
David Vargas
3

Para usuários do macOS:

Este erro aparece quando você está usando várias contas Git na mesma máquina.

Siga as etapas abaixo para remover as credenciais do github.com.

  1. Vá para o Finder
  2. Vá para Aplicativos
  3. Vá para a pasta Utilitários
  4. Acesso ao chaveiro aberto
  5. Selecione o github.com e clique com o botão direito nele

    Excluir "github.com"

Tente novamente Empurrar ou Puxar para git e solicitará as credenciais. Digite credenciais válidas para a conta do repositório. Feito

iamsurajdc
fonte
3

Para o Windows 10, vá para o caminho abaixo,

Painel de controle \ Contas de usuário \ Credential Manager

Haverá duas guias neste local,

  1. Credenciais da Web e 2. credenciais do Windows.

Clique na guia Credenciais do Windows e aqui você pode ver suas credenciais armazenadas no Github, no cabeçalho "Credenciais genéricas".

Você pode removê-los daqui e tentar clonar novamente - ele solicitará o nome de usuário / senha agora, pois acabamos de remover a credencial armazenada dos sistemas Windows 10

AADProgramming
fonte
2

Para limpar o cache do Git Credentials Managers for Windows:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

ou

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache
Chris F Carroll
fonte
2

Tente isso quando nada como mencionado acima estiver funcionando para você.

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

isso removerá o cache a cada três segundos e solicitará o nome de usuário e a senha. Você pode executar novamente o comando com valores de tempo limite aumentados.

manish kumar
fonte
1

No nosso caso, limpar a senha no arquivo .git-credentials do usuário funcionou para nós.

c:\users\[username]\.git-credentials
Tarifas
fonte
Sim, várias outras pessoas afirmaram isso inúmeras vezes já
Liam
1

Com base na resposta mais votada de @ patthoyts ( https://stackoverflow.com/a/15382950/4401322 ):

Sua resposta usa, mas não explica, as configurações "local" x "global" x "sistema". A documentação oficial do git para eles está aqui e vale a pena ler.

Por exemplo, eu estou no Linux e não uso uma configuração do sistema , por isso nunca uso um --systemsinalizador, mas geralmente preciso diferenciar entre --locale --globalconfigurações.

Meu caso de uso é que eu tenho duas credenciais do Github; um para o trabalho e outro para o jogo.

Aqui está como eu lidaria com o problema:

$ 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://[email protected]':
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

Também é importante notar que existem maneiras de evitar esse problema completamente, por exemplo, você pode usá-lo ~/.ssh/configcom as chaves SSH associadas ao Github (uma para o trabalho e outra para o play) e hosts remotos com nomes personalizados correspondentes para resolver também a contextualização da autenticação.

irbanana
fonte
1

Para adicionar ao https://stackoverflow.com/a/41111629/579827 de @ericbn, aqui estão exemplos de comandos incorporados em um script que corro para atualizar todas as minhas senhas sempre que forem renovadas. Provavelmente não é utilizável como está, pois é bastante específico, mas mostra o uso na vida real cmdkey.exe.

⚠ Este é um script de shell executado no cygwin

Works Isso funciona porque eu uso repositórios git privados que são autenticados com a mesma senha (você provavelmente não deseja fazer o loop com as mesmas credenciais, mas pode reutilizar este exemplo de /listcomando para extrair uma lista de credenciais já registradas) ⚠

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
fonte
0

Se você estiver autenticado usando seu par de chaves, poderá excluir ou mover sua chave privada ou parar o agente de chaves e tentar.

Munim
fonte
2
ele está usando https, então não há nenhuma chave envolvida aqui
CharlesB 13/03