Como mudar o usuário git no terminal?

46

Estou tentando enviar um projeto para um repositório remoto a partir da linha de comando.

De dentro do meu diretório local, pressionei:

$ git push

e obtenha o seguinte erro:

remote: permissão para nomedeusuário1 / repo.git negada para nomedeusuário2.
fatal: não foi possível acessar ' https://github.com/username1/repo.git/ ':
o URL solicitado retornou o erro: 403

Onde username1está o nome de usuário da minha conta do github que hospeda o repositório para o qual desejo enviar por push e username2é uma conta antiga que costumava usar nesta máquina.

Estou usando o OS X Yosemite (v10.10.5) em um Macbook Air. E eu preferiria usar https em vez de ssh .

Como atualizo para username1poder enviar com êxito para o meu controle remoto?

Editar: para ser claro, não estou falando simplesmente de editar o config userobjeto, por exemplo,

$ git config --global user.name "Billy Everyteen"
$ git config --global user.email "[email protected]"

Eles não têm nada a ver com autenticação. Minha pergunta lida com a autenticação do usuário necessária para gravar no meu repositório remoto.

Mowzer
fonte
Obrigado. Mas isso lida apenas com a configuração do nome de usuário. Não é autenticação. Em outras palavras, essa documentação mostra como associar o nome de quem recebe crédito pelas confirmações. Mas na verdade não autoriza o usuário a enviar confirmações por push.
Mowzer 11/04
1
Você pode alterar como usuário o comando documentado em git-scm.com/docs/gitcredentials . Como alternativa, se você desejar limpar as credenciais, poderá examinar esta pergunta stackoverflow.com/questions/15381198/… .
John John
Isso não resolve o problema!
Mihail Salari 5/04
e se eu não quiser alterar as configurações locais do git?
Arkady

Respostas:

42

Além de alterar o nome de usuário e o email do terminal, use git config:

$ git config --global user.name "Bob"
$ git config --global user.email "[email protected]"

você precisará remover as informações de autorização do Keychain. Isso é algo com o qual também lutei até descobrir que também tinha certificado no meu chaveiro.

Abra o acesso ao chaveiro, clique em Todos os itens e procure git. Você receberá alguns itens como este:

Captura de tela

Exclua-os. Agora tente empurrar o repositório e o git solicitará que você escreva a senha para o usuário e você estará pronto.

Disse Sikira
fonte
1
E os usuários do Windows?
Aks ..
2
Eu tenho várias contas, o que devo fazer
Amerrnath
Estou tendo o mesmo problema com o win7. Eu não tenho certeza qual é a solução :(
Fiddle Freak
22

Para usuários cli, basta usar este: git config credential.username 'Billy Everytee'

Jackman
fonte
Você precisa desativar o 2FA temporariamente.
bbaassssiiee
10

Para usuário do Windows:
Siga as instruções:
Painel de controle >> Conta de usuário >> Gerenciador de credenciais >> Credencial do Windows >> Credencial genérica

remova a credencial git.
na próxima vez em que você enviar o repositório, ele solicitará credenciais.
Referência de resposta para explicação detalhada

Shubham Chadokar
fonte
Obrigado! Era isso que eu estava procurando no Windows.
JCF 25/03
@JCF Welcome! Fico feliz que ajudou!
Shubham Chadokar 25/03
6

Liste sua configuração do git.

git config --list

Alterar nome de usuário e email global

git config --global user.name "Nanhe Kumar"
git config --global user.email "[email protected]"

Alterar nome de usuário e email para o repo atual

git config  user.name "Nanhe Kumar"
git config  user.email "[email protected]"

Altere seu URL de repositório se você estiver usando o bucket de bits.

nano .git/config

Este arquivo será algo como isto. [core] repositoryformatversion = 0 fileMode = false bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://[email protected]/nanhekumar/myproject.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master

[user]
        name = Nanhe Kumar
        email = [email protected]
Nanhe Kumar
fonte
Essa é a resposta mais completa, considerando o escopo de repositório global e local.
Jordan Stefanelli