Como Configurar Múltiplas Contas do Git no Windows
Acontece nas melhores famílias de devs: você clona o repositório da firma no seu notebook Windows, trabalha o dia todo, faz vários commits e, na hora de dar o push, percebe que assinou tudo com seu e-mail pessoal e sua chave GPG do repositório de pet projects.
No Linux e no macOS, separar repositórios com arquivos .gitconfig condicionais costuma ser bem tranquilo. No Windows, porém, os detalhes de sintaxe de caminhos de arquivos, múltiplos drives e o funcionamento do includeIf costumam ser uma pegadinha clássica.
Abaixo, veja o passo a passo definitivo em formato de história para você nunca mais esquecer como isolar seus ambientes por diretório ou drive no Windows.
O Cenário do Dev
Imagine o Dudu, um desenvolvedor backend que trabalha no Windows. Ele precisa manter duas identidades no mesmo sistema:
- Trabalho (GitLab - Empresa TechCorp): Projetos no drive
D:\Trabalho\, e-maildudu@techcorp.come chave GPG de trabalho. - Pessoal (GitHub): Projetos no drive
C:\Projetos\Pessoal\, e-maildudufull@gmail.come chave GPG pessoal.
A meta do Dudu é simples: quando ele entrar em qualquer pasta dentro de D:\Trabalho\, o Git deve usar suas credenciais corporativas. Quando estiver em C:\Projetos\Pessoal\, deve usar as pessoais.
Passo 1: Criar os Arquivos Específicos de Configuração
Em vez de colocar tudo dentro do .gitconfig global, crie arquivos separados para cada perfil na sua pasta de usuário (C:\Users\Dudu\).
1. Perfil Pessoal (.gitconfig-pessoal)
Arquivo salvo em: C:\Users\Dudu\.gitconfig-pessoal
Ini, TOML
[user]
name = Dudu
email = dudufull@gmail.com
signingkey = 1111222233334444
[commit]
gpgsign = true
[tag]
gpgsign = true
2. Perfil de Trabalho (.gitconfig-trabalho)
Arquivo salvo em: C:\Users\Dudu\.gitconfig-trabalho
Ini, TOML
[user]
name = Dudu (TechCorp)
email = dudu@techcorp.com
signingkey = AAAA3333BBBB4444
[commit]
gpgsign = true
[tag]
gpgsign = true
Passo 2: O .gitconfig Global e os Segredos do Windows
Abra o .gitconfig global localizado em C:\Users\Dudu\.gitconfig. É aqui que a mágica (e a maioria das pegadinhas) acontece.
Ini, TOML
[user]
name = Dudu
email = dudufull@gmail.com
[core]
autocrlf = true
sshCommand = C:/Windows/System32/OpenSSH/ssh.exe
[gpg]
program = C:/Program Files (x86)/gpg4win/bin/gpg.exe
# -------------------------------------------------------------
# Inclusões Condicionais por Diretório e Drive (Windows)
# -------------------------------------------------------------
# Para projetos pessoais no Drive C:
[includeIf "gitdir/i:C:/Projetos/Pessoal/"]
path = ~/.gitconfig-pessoal
# Para projetos de trabalho em OUTRO DRIVE (Drive D:):
[includeIf "gitdir/i:D:/Trabalho/"]
path = ~/.gitconfig-trabalho
As 4 Regras Importantes do Windows (Onde o Dudu Esbarrou)
- Atenção à Ortografia: Escreva
includeIf(com d). Um simples erro de digitação comoincluceiffará o Git ignorar o bloco sem disparar nenhum aviso explicativo. - Use
gitdir/i:em vez de apenasgitdir:: O sistema de arquivos do Windows não diferencia maiúsculas e minúsculas (D:\Trabalhoed:\trabalhosão iguais). O prefixo/igarante que a correspondência funcione de forma case-insensitive no Windows. - Sempre adicione a barra final
/: O caminho deve terminar com/(ex:D:/Trabalho/). Isso indica ao Git que a regra deve valer para todas as pastas e subpastas contidas naquele diretório. - Use Barras Normais (
/): Mesmo no Windows e mesmo especificando letras de drives (C:ouD:), utilize a barra normal/no arquivo do Git.
Passo 3: Como Validar (A Pegadinha do Terminal)
Esta é a dúvida mais comum: rodar git config user.email logo após editar o arquivo nem sempre mostra o resultado esperado.
Para o includeIf ser ativado, você precisa estar dentro de um repositório Git ativo (uma pasta contendo o diretório oculto .git ou após rodar um git init).
Testando na Prática
Testando o perfil corporativo no Drive D:
cd D:\Trabalho\projeto-api
git config user.email
Resultado retornado: dudu@techcorp.com
Testando a Assinatura GPG:
git config commit.gpgsign
Resultado retornado: true
Verificando a chave de assinatura ativa no repositório:
git config user.signingkey
Resultado retornado: AAAA3333BBBB4444
Pronto! A partir de agora, o Git altera suas credenciais e chaves GPG automaticamente dependendo do drive e diretório em que seu terminal estiver aberto. No github tem documentação sobre como configurar o ssh e gnupg.



