DEV Community

Cover image for Git com duas contas
Adriano Moreira
Adriano Moreira

Posted on

Git com duas contas

O git como ferramenta de gestão de código dispensa apresentações, mas vejo muitos profissionais com dificuldade em trabalhar com ele em duas contas, quem nunca fez um commit naquele projeto pessoal com o email da empresa que atire a primeira pedra.

Nota: O quê vai ser mostrado aqui funciona no 🪟 Windows também, mesmo usando ~ para representar a $HOME / %USERPROFILE% , confia.

O basico

Primeiro vamos configurar a conta principal

primeiro vamos gerar nossas chaves

ssh-keygen -C "email-da-conta-principal@mail.com"
Enter fullscreen mode Exit fullscreen mode

adicionar a chave publica no GitHub/AzureDevOps/Bitbuckt/GitLab/...

git config --global user.email "email-da-conta-principal@mail.com"
git config --global user.name "Nome na Conta Principal"
Enter fullscreen mode Exit fullscreen mode

e pronto tudo certo para usar apenas uma conta

Usando outro nome ou email

Vamos supor que você possui uma conta pessoal no GitHub e utiliza na empresa qualquer serviço diferente do GitHub como AzureDevOps/Bitbuckt/GitLab o qual realmente é a situação de muita gente.

Nesse caso basta adicionarmos a mesma chave publica nos dois provedores. Mas como configurar o nome e email correto para cada um?

🤔

Uma solução é fazermos uma configuração local que vale apenas para aquele repositório, que queremos diferente da configuração global.

git clone git@github.com:minha-conta/meu-projeto
cd meu-projeto
git config --local user.email "email-da-conta-pessoal@mail.com"
git config --local user.nome "Nome da conta pessoal"
Enter fullscreen mode Exit fullscreen mode

Obs: a flag --local pode ser omitida, o comando git config ... sem a flag --global é local.

Uma solução um pouco mais elaborada é criar uma configuração global baseado no diretório em que os repositórios são armazenados.

arquivo ~/.gitconfig

[user]
    name = Nome na Conta Principal
    email = email-da-conta-principal@mail.com

[includeIf "gitdir:~/repos_pessoais/"]
    path = ~/repos_pessoais/.gitconfig
Enter fullscreen mode Exit fullscreen mode

arquivo ~/repos_pessoais/.gitconfig

[user]
    name = Nome na Conta Pessoal
    email = email-da-conta-pessoal@mail.com
Enter fullscreen mode Exit fullscreen mode

Para qualquer uma das duas soluções acima é possível testar se esta tudo certo executando o seguinte comando dentro de um repositório clonado:

git config --get user.email
git config --get user.name
Enter fullscreen mode Exit fullscreen mode

Usado duas contas no mesmo serviço

Agora vamos imaginar que você possui por exemplo uma conta pessoal no GitHub e uma conta com o email da empresa também no GitHub

para quem não percebeu a chave funciona com com Identificador único, então não podemos usar a mesma em duas contas do mesmo serviço, precisamos criar uma nova chave ssh.

vamos criar uma nova chave:

ssh-keygen -C "email-da-conta-pessoal@mail.com"
Enter fullscreen mode Exit fullscreen mode

Durante a geração da chave precisamos passar um outro caminho para não sobrescrever a anterior.

Vamos cadastrar a nova chave publica na nossa conta.

caso não possua ainda um arquivo config na pasta .ssh na pasta do usuário vamos criar um mais ou menos assim

arquivo: ~/.ssh/config

# Conta Default/Profissional GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

# Professional
Host github-pessoal.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_pessoal
Enter fullscreen mode Exit fullscreen mode

No campo Host é um alias pode por qualquer nome mas no campo HostName precisa estar no domínio certo.

Agora para usar a conta principal não muda nada e para usar a conta pessoal precisamos utilizar o alias exemplo:

git clone git@github-pessoal.com:minha-conta/meu-projeto
Enter fullscreen mode Exit fullscreen mode

Perceba que no lugar do host correto github.com utilizamos o alias github-pessoal.com

E se você chegou até aqui Parabéns 🎉🎉🎉 , você é tipo o Julius pai do Chris que tem dois empregos.

Top comments (0)