Como você redefine as credenciais armazenadas em 'git credential-osxkeychain'?

98

Segui as instruções do GitHub para configurar minha conta e posso clonar, mas não consigo enviar remotamente.

Quando eu faço um "git push", obtenho o erro 403. Ele tem o URL correto. Eu tentei um "git credential-osxkeychain get" para ver o que estava dando, e isso imprime as credenciais erradas.

Acredito que o que aconteceu foi a primeira vez que ele pediu as credenciais, pensei que era outro aplicativo pedindo, e colocou as erradas.

Eu só preciso redefini-lo para que ele use o item de chaveiro correto para minha conta do GitHub.

Eu tentei:

git credential-osxkeychain erase
git credential-osxkeychain set

O programa nunca dá nenhum aviso. Set dirá "entrada incorreta" se eu não fizer a coisa certa. Eu tentei colocar " password=password", etc., mas quando eu faço um "get" eu ainda obtenho os antigos.

Não consigo descobrir onde eles estão sendo armazenados, pois eles não estão em .gitconfigure. Além disso, não há nenhum item de chaveiro recente que possa ser isso. (Eu tenho várias contas GitHub em meu chaveiro e não está usando nenhuma delas.)

nirvana
fonte

Respostas:

122

Do Terminal:

 $ git credential-osxkeychain erase
 host=github.com
 protocol=https
 <press return>

NOTA: depois de inserir "protocolo = https" acima, você precisa pressionar ~~ RETURN ~~ DUAS VEZES

maz
fonte
2
Por algum motivo, não consegui encontrar nenhuma credencial Git / GitHub no aplicativo Keychain, mas funcionou. Obrigado!
Donald
4
Já que isso não ficou claro para mim: você tem que inserir todas as 3 linhas acima e, em seguida, pressionar Enter novamente - ou seja, as linhas 2/3 acima não são geradas pelo comando, mas sim inseridas.
Frederik
Essa resposta me ajudou. Muito obrigado!
Ken Flake,
70

Não tenho certeza de como apagar por meio da linha de comando, mas é bastante fácil fazer isso por meio do aplicativo Keychain Access. Basta ir para Aplicativos -> Utilitários -> Acesso às Chaves e, em seguida, digite "github.com". Você pode excluir o item inválido ou atualizar a senha com o aplicativo.

benzado
fonte
4
Se alguém lendo isso descobrir como fazer na linha de comando, seria bom saber.
funroll de
1
@funroll A ferramenta de linha de comando é security. A página do manual afirma que tem um delete-internet-passwordcomando.
benzado
Obrigado pela atualização, tenho certeza que será útil para alguém.
funroll de
esta é a melhor solução
Elias Fazel
De qual chaveiro?
Bryan Bryce
28

A solução acabou sendo esta:

O comando git credential-osxkeychainestava usando a primeira entrada da conta GitHub em minhas chaves. Este não foi o único que teve acesso aos projetos em questão.

Resolvi o problema tocando na conta no Keychain Access para que sua data mudasse (acho que acabei de mudar o comentário) e agora que se tornou a conta GitHub mais recente, ela se tornou a primeira a retornar ao credential-osxkeychain e, portanto, tudo funcionou .

Uma forma melhor de suporte para várias contas do GitHub seria boa, mas é provável que a maioria das pessoas tenha apenas uma conta principal e não tenha esse problema.

nirvana
fonte
2
Não tenho certeza de como isso funciona para vários usuários no mesmo host, mas você pode verificar o ssh e usar um ~/.ssh/configarquivo em vez de usar o OSX Keychain. Isso é usado nos casos em que você pode ter várias chaves ssh para diferentes hosts (e contas de pensamento também). nerderati.com/2011/03/17/…
jusopi
10

git-credential-osxkeychain armazena senhas no Apple Keychain, conforme observado acima.

Por padrão, gitcredentials considera apenas o nome de domínio. Se você deseja que o Git considere o caminho completo (por exemplo, se você tiver várias contas GitHub), defina a useHttpPathvariável truecomo, conforme descrito em http://git-scm.com/docs/gitcredentials.html . Observe que a alteração dessa configuração solicitará suas credenciais novamente para cada URL.

MacFreek
fonte
7

No Mac, use o comando git credential-osxkeychain erase.

OU remova manualmente das chaves em AplicativosUtilitáriosAcesso às Chaves . Em seguida, remova o chaveiro github.com. Em seguida, use push; ele vai pedir o acesso do keychain; então negue.

Ele vai pedir o novo nome de usuário e senha, adicioná-lo e enviar um arquivo para isso.

Depois git pushque encontrei esse erro. Então eu uso o problema de maiúsculas:

remote: Permissão para user1 / file.git negada para user2 (usuário existente anteriormente). fatal: incapaz de acessar ' https://github.com/xxxxxxxxxxxx/ ': O URL solicitado retornou o erro: 403

Amit Kumar
fonte
6

Tente correr /Applications/Utilities/Keychain Access.

echristopherson
fonte