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"
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"
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"
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
arquivo ~/repos_pessoais/.gitconfig
[user]
name = Nome na Conta Pessoal
email = email-da-conta-pessoal@mail.com
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
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"
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
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
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)