Diagnóstico e Logout do Git/GitHub
🔐 Diagnóstico e Logout do Git/GitHub
Quando o Git continua utilizando uma conta antiga do GitHub, fazer apenas gh auth logout não é suficiente.
Isso acontece porque existem diferentes mecanismos de autenticação:
Git / GitHub
│
┌───────────┴───────────┐
│ │
▼ ▼
Git over HTTPS GitHub CLI
│ │
▼ ▼
Git Credential Manager gh auth
│
▼
Windows Credential Manager
Este guia apresenta um procedimento para:
- 🔎 diagnosticar o estado atual;
- 🧹 remover credenciais armazenadas pelo Git;
- 🪟 verificar credenciais do Windows;
- 🐙 fazer logout do GitHub CLI;
- ✅ validar o resultado;
- 🔑 autenticar novamente.
1. 🔎 Primeiro: descobrir o que está autenticado
Antes de apagar qualquer coisa, verifique o estado atual.
GitHub CLI
Execute:
gh auth status
Um resultado semelhante a:
github.com
✓ Logged in to github.com account usuario
- Active account: true
- Git operations protocol: https
indica que o GitHub CLI possui uma sessão autenticada.
2. 🔎 Verificar a configuração do Git
Veja como o Git está configurado:
git config --global --list
Para visualizar também configurações locais do projeto:
git config --list --show-origin
Procure principalmente por:
user.name
user.email
credential.helper
Exemplo
file:C:/Users/usuario/.gitconfig
user.name=Adriano Ruseler
user.email=usuario@example.com
credential.helper=manager
3. 🔎 Verificar o endereço remoto do projeto
Dentro do repositório Git:
git remote -v
Exemplo:
origin https://github.com/usuario/projeto.git (fetch)
origin https://github.com/usuario/projeto.git (push)
Ou:
origin git@github.com:usuario/projeto.git (fetch)
origin git@github.com:usuario/projeto.git (push)
Isso é importante porque existem dois mecanismos diferentes:
| URL | Método |
|---|---|
https://github.com/... | HTTPS + credencial/token |
git@github.com:... | SSH + chave SSH |
🧹 4. Limpar autenticação HTTPS do Git
Se o projeto utiliza:
https://github.com/...
o Git normalmente utiliza o Git Credential Manager.
Para remover a credencial armazenada para o GitHub:
git credential-manager erase
Dependendo da versão do Git Credential Manager, o comando pode solicitar os dados do servidor.
Uma forma explícita é:
echo "protocol=https
host=github.com" | git credential-manager erase
🪟 5. Verificar o Credential Manager do Windows
O Windows também pode possuir credenciais armazenadas.
No CMD:
cmdkey /list | findstr "github"
No PowerShell:
cmdkey /list | Select-String "github"
Um resultado pode ser semelhante a:
Target: LegacyGeneric:target=git:https://github.com
Nesse caso, existe uma credencial relacionada ao GitHub armazenada no Windows.
6. Remover a credencial do Windows
Se você identificou uma credencial que deseja remover:
cmdkey /delete:git:https://github.com
Depois, verifique novamente:
cmdkey /list | findstr "github"
🐙 7. Fazer logout do GitHub CLI
O GitHub CLI possui seu próprio mecanismo de autenticação.
Para sair:
gh auth logout
O CLI normalmente pergunta qual conta/host deve ser desconectado.
Depois confirme:
gh auth status
O objetivo é que o GitHub CLI não apresente mais uma sessão autenticada para a conta que você acabou de remover.
🔎 8. Diagnóstico completo
Quando o problema ainda não estiver resolvido, execute os comandos abaixo.
8.1 Versão do Git
git --version
8.2 Versão do GitHub CLI
gh --version
8.3 Configuração de credenciais
git config --show-origin --get-all credential.helper
8.4 Identidade configurada
git config --global user.name
git config --global user.email
8.5 Repositório remoto
git remote -v
8.6 Estado do GitHub CLI
gh auth status
8.7 Credenciais do Windows
No CMD:
cmdkey /list | findstr "github"
🧪 9. Testar novamente
Depois de remover as credenciais, faça uma operação que exija autenticação.
Por exemplo:
git fetch
ou:
git pull
Se estiver utilizando HTTPS e não houver uma credencial válida armazenada, o Git deverá solicitar uma nova autenticação ou acionar o mecanismo configurado para autenticação.
🔑 10. Autenticar novamente pelo GitHub CLI
Uma opção conveniente é utilizar o GitHub CLI:
gh auth login
O assistente apresentará opções para configurar:
- GitHub.com;
- protocolo HTTPS ou SSH;
- autenticação pelo navegador.
Depois confirme:
gh auth status
🔄 11. Procedimento completo para trocar de conta
Se o objetivo for trocar completamente a conta GitHub utilizada no computador, utilize esta sequência.
Passo 1 — verificar
gh auth status
Passo 2 — verificar o remoto
git remote -v
Passo 3 — remover autenticação do GitHub CLI
gh auth logout
Passo 4 — limpar credencial HTTPS do Git
echo "protocol=https
host=github.com" | git credential-manager erase
Passo 5 — verificar credenciais do Windows
cmdkey /list | findstr "github"
Passo 6 — remover uma credencial identificada
cmdkey /delete:git:https://github.com
Passo 7 — confirmar
gh auth status
Passo 8 — autenticar novamente
gh auth login
🧭 12. Fluxograma de diagnóstico
Problema com GitHub
│
▼
git remote -v
│
┌───────────┴───────────┐
│ │
▼ ▼
https://... git@github.com:...
│ │
▼ ▼
Credential Manager SSH
│ │
▼ ▼
cmdkey / GCM ssh -T
│ │
▼ │
limpar credencial │
│ │
└───────────┬───────────┘
▼
gh auth status
│
▼
gh auth login
📋 13. Tabela de referência
| Sintoma | Verificar | Comando |
|---|---|---|
| Git usa conta antiga | Credential Manager | git credential-manager |
| Credencial armazenada no Windows | Windows Credential Manager | cmdkey /list |
| GitHub CLI está conectado | GitHub CLI | gh auth status |
| Fazer logout do CLI | GitHub CLI | gh auth logout |
| Fazer novo login | GitHub CLI | gh auth login |
| Descobrir protocolo do projeto | Remote | git remote -v |
| Identidade dos commits | Git config | git config user.email |
| Configuração do Credential Manager | Git config | git config --get-all credential.helper |
⚠️ GitHub CLI ≠ Git
É importante entender esta diferença:
┌───────────────────────────────┐
│ Git │
│ │
│ git pull │
│ git push │
│ git fetch │
│ │
│ Credential Manager │
└───────────────┬───────────────┘
│
│ HTTPS
▼
github.com
┌───────────────────────────────┐
│ GitHub CLI │
│ │
│ gh auth login │
│ gh auth logout │
│ gh auth status │
│ │
│ autenticação do gh │
└───────────────┬───────────────┘
│
▼
github.com
Portanto:
gh auth logout
não significa necessariamente que o Git deixou de possuir uma credencial HTTPS armazenada.
Da mesma forma:
git credential-manager erase
não significa necessariamente que o GitHub CLI foi desconectado.
✅ Checklist final
Antes de considerar o ambiente limpo:
-
git remote -vfoi verificado - O protocolo HTTPS/SSH foi identificado
-
git config --global user.namefoi verificado -
git config --global user.emailfoi verificado -
git credential-managerfoi verificado -
cmdkey /listfoi verificado - Credenciais antigas foram removidas
-
gh auth statusfoi verificado -
gh auth logoutfoi executado, se necessário -
gh auth loginfoi executado para a nova conta -
git fetchougit pullfoi testado
:::