Como trabalhar com várias contas do git em uma única máquina
Tags: github, git
Published: 2024-05-27 15:25:28

Você já se encontrou em uma situação onde precisa ter mais de uma conta Git configurada na mesma máquina? Talvez você precise de uma conta pessoal e outra para a empresa.

Nesses casos, não é interessante ter um usuário global configurado na máquina, pois isso poderia acarretar no problema de fazer um commit com a conta errada para um projeto específico.

Antes de mais nada, vamos configurar duas chaves SSH, uma para cada perfil.

### Criando a chave SSH
Abra o seu terminal e digite o seguinte comando:

```
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
```
Isso cria uma nova chave SSH, usando o e-mail fornecido como rótulo.

```
> Generating public/private ALGORITHM key pair.
```

Quando for solicitado a "Inserir um arquivo no qual salvar a chave", você pode pressionar Enter para aceitar o local padrão do arquivo. 
Porém recomendo mudar o nome do arquivo pois teremos 2 chaves distintas.

```
> Enter a file in which to save the key (/Users/YOU/.ssh/id_rsa_nome_aqui): [Press enter]
```
Depois de pressionar enter provavelmente aparcerá a frase a seguir:

```
> Enter passphrase (empty for no passphrase): [Type a passphrase]
```

Você pode optar por não usar uma senha para suas chaves SSH. Se preferir adicionar uma senha, digite-a e pressione Enter. Caso contrário, apenas pressione Enter sem digitar nada.

Repita o mesmo procedimento para a segunda chave.

Não se esqueça de adicionar cada chave à sua conta do GitHub ou outro serviço que você esteja utilizando.

### Configurando a Chave para Repositórios Distintos
Vamos criar dois aliases para facilitar a configuração do Git.

O que é um "alias"?

Um alias é uma maneira de definir comandos personalizados para economizar tempo e digitar menos.

Abra seu terminal com o editor de sua preferência. Aqui, usaremos o Vim.

`$ vim ~/.zshrc`

Se você também usa o Vim, pressione "a" para entrar no modo de inserção e cole o seguinte:

```
# ALIAS CONFIG GIT
alias gcg="git config --edit --global"
alias gcl="git config --edit --local"
```

Pressione Esc e digite:

`:wq!`

Agora, recarregue seu arquivo de configuração do seu terminal:

`souce ~/.zshrc`

Vá até o diretório do seu repositório e abra o terminal a partir dele. Digite:


`$ gcl`

Isso abrirá o arquivo .git/config do repositório no qual você está. Configure-o da seguinte forma:

```
[core]
        sshCommand = ssh -i ~/.ssh/sua-chave-ssh -F /dev/null
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[remote "origin"]
        url = git@github.com:seu-username/seu-repo
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main
[credential]
        username = Seu-username
[user]
        email = seuemail@teste.com
        name = Seu Nome
                                                                             
"~/seu-caminho/seu-repositorio/.git/config" 19L,
```

Dentro [core] coloque:
`  sshCommand = ssh -i ~/.ssh/sua-chave-ssh -F /dev/null`

Logo a baixo nas últimas linhas coloque:

```
[credential]
        username = Seu-username
[user]
        email = seuemail@teste.com
        name = Seu Nome
```
Dessa forma, o repositório específico utilizará as credenciais configuradas.

Não se esqueça de recarregar o arquivo de configuração

`source ~/.zshrc`

Para atualizar o terminal.

Lembre-se de repetir esse processo para cada repositório em sua máquina.

Espero que isso tenha ajudado!