Last active
December 4, 2023 15:11
-
-
Save marcelopalin/6f6ff31d6904bc5820a77730c984868e to your computer and use it in GitHub Desktop.
Configurando Duas Contas GitLab no Mesmo Sistema Linux
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # **Configurando Duas Contas GitLab no Mesmo Sistema Linux** | |
| ## **1. Introdução** | |
| Este tutorial auxilia na configuração de duas contas GitLab — uma pessoal e outra de trabalho — em uma única máquina Linux, utilizando chaves SSH e configurações de usuário distintas. | |
| ## **2. Geração e Configuração de Chaves SSH** | |
| ### **Gerar Chaves SSH:** | |
| 1. Abra o terminal. | |
| 2. Para a conta pessoal, execute: | |
| ``` | |
| ssh-keygen -t rsa -b 4096 -C "seu_email_pessoal@example.com" -f ~/.ssh/id_rsa_personal | |
| ``` | |
| 3. Para a conta de trabalho, execute: | |
| ``` | |
| ssh-keygen -t rsa -b 4096 -C "seu_email_de_trabalho@example.com" -f ~/.ssh/id_rsa | |
| ``` | |
| ### **Alterar Permissões das Chaves:** | |
| 1. Execute os comandos: | |
| ``` | |
| chmod 600 ~/.ssh/id_rsa_personal | |
| chmod 600 ~/.ssh/id_rsa | |
| ``` | |
| ### **Adicionar Chaves ao Agente SSH:** | |
| 1. Execute: | |
| ``` | |
| ssh-add ~/.ssh/id_rsa_personal | |
| ssh-add ~/.ssh/id_rsa | |
| ``` | |
| ## **3. Configuração dos Arquivos `.gitconfig`, `.gituser-default` e `.gituser-work`** | |
| Crie estes arquivos na raiz do seu linux. Se não sabe onde fica, abra o terminal | |
| e digite: `echo $HOME` | |
| Para ir até lá basta digitar: `cd ~` ou apenas `cd` que ele muda para o seu diretório HOME. | |
| ### **.gitconfig:** | |
| ```ini | |
| [include] | |
| path = .gituser-default | |
| [includeIf "gitdir:~/work/"] | |
| path = .gituser-work | |
| [includeIf "gitdir:~/www/"] | |
| path = .gituser-default | |
| [alias] | |
| c = !git add --all && git commit -m | |
| s = !git status -s | |
| l = log --graph --decorate --date-order --date=local --date=format:'%y-%M-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %Cgreen(%cd) %C(auto)%d %C(bold blue)<%an>%Creset' --max-count=20 --abbrev-commit | |
| lall = log --graph --decorate --date-order --date=local --date=format:'%y-%M-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %Cgreen(%cd) %C(auto)%d %C(bold blue)<%an>%Creset' --abbrev-commit | |
| previous = !git checkout $(git rev-list demo-start~1..HEAD | head -2 | tail -1) | |
| next = !git checkout $(git rev-list HEAD..demo-end | tail -1 ) | |
| [core] | |
| autocrlf = input | |
| editor = code --wait | |
| [merge] | |
| tool = vscode | |
| [mergetool "vscode"] | |
| cmd = code --wait $MERGED | |
| [diff] | |
| tool = vscode | |
| [difftool "vscode"] | |
| cmd = code --wait --diff $LOCAL $REMOTE | |
| [user] | |
| signingkey = A61BAA8B5EFC0032 | |
| [diff] | |
| tool = vscode | |
| [difftool "vscode"] | |
| cmd = code --wait --diff $LOCAL $REMOTE | |
| [url "ssh://git@github.com/"] | |
| insteadOf = https://github.com/ | |
| [url "git@github.com"] | |
| insteadOf = https://github.com | |
| ``` | |
| ### **.gituser-default (Para conta pessoal):** | |
| ```git | |
| [user] | |
| name = FULL NAME | |
| email = my.personal@zmail.com | |
| [core] | |
| sshCommand = "ssh -i ~/.ssh/id_rsa_personal" | |
| editor = code --wait | |
| ``` | |
| ### **.gituser-work (Para conta de trabalho):** | |
| ```git | |
| [user] | |
| name = FULL NAME | |
| email = seu_email_de_trabalho@example.com | |
| [core] | |
| sshCommand = "ssh -i ~/.ssh/id_rsa" | |
| editor = code --wait | |
| ``` | |
| A parte que aparece: | |
| ```s | |
| [user] | |
| signingkey = A61BAA8B5EFC0032 | |
| [commit] | |
| gpgsign = true | |
| ``` | |
| Diz para o Git assinar automaticamente os commits utilizando a chave GPG. | |
| Para saber mais como assinar seus Commits leia a última seção deste artigo. | |
| --- | |
| ## **4. Diretivas `includeIf`** | |
| - A diretiva `includeIf "gitdir:~/work/"` no `.gitconfig` permite alternar automaticamente para a configuração de trabalho ao entrar no diretório `~/work`. | |
| --- | |
| ## **5. Testes e Validação** | |
| - Teste clonando repositórios de ambas as contas para garantir que as configurações estão corretas. | |
| - Faça commits e verifique se o nome de usuário e e-mail estão corretos em cada repositório. | |
| --- | |
| ## **6. Conclusão e Dicas Adicionais** | |
| - Mantenha suas chaves SSH seguras e não compartilhe com ninguém. | |
| - Utilize comentários nos arquivos de configuração para facilitar a manutenção e o entendimento por outros usuários. | |
| --- | |
| ## **7. Gerando uma chave GPG e assinando os Commits do Git** | |
| ### 1. Instalar GPG | |
| Primeiro, certifique-se de ter o GPG instalado. Em sistemas baseados em Unix (como Linux e macOS), ele geralmente já está instalado. No Windows, você pode usar o [Gpg4win](https://www.gpg4win.org/). | |
| ### 2. Gerar Chave GPG | |
| Para gerar uma nova chave GPG, abra o terminal e execute: | |
| ```bash | |
| gpg --full-generate-key | |
| ``` | |
| Siga as instruções, escolhendo o tipo de chave (geralmente RSA e RSA), tamanho da chave (2048 ou 4096 são comuns), tempo de expiração (pode ser `0` para nunca expirar) e detalhes do usuário (nome e e-mail). | |
| ### 3. Listar Chaves GPG | |
| Depois de gerar a chave, liste suas chaves GPG para encontrar o ID da chave que você acabou de criar: | |
| ```bash | |
| gpg --list-secret-keys --keyid-format LONG | |
| ``` | |
| Você verá uma saída como esta: | |
| ```bash | |
| sec rsa4096/123ABCD123456789 2023-01-01 [SC] | |
| 1234567890ABCDEF1234567890ABCDEF12345678 | |
| uid [ultimate] Seu Nome <seu@email.com> | |
| ssb rsa4096/987FEDCBA9876543 2023-01-01 [E] | |
| ``` | |
| Neste exemplo, `123ABCD123456789` é o ID da chave. | |
| ### 4. Associar Chave GPG com Git | |
| Agora, configure o Git para usar essa chave para assinar commits: | |
| ```bash | |
| git config --global user.signingkey 123ABCD123456789 | |
| ``` | |
| Substitua `123ABCD123456789` pelo ID da sua chave. | |
| ### 5. Dizer ao Git para Assinar Commits Automaticamente | |
| Se desejar, você pode configurar o Git para assinar todos os seus commits automaticamente: | |
| ```bash | |
| git config --global commit.gpgsign true | |
| ``` | |
| ### 6. Adicionar Chave GPG ao GitHub (Opcional) | |
| Se você estiver usando o GitHub, será necessário adicionar sua chave GPG pública a sua conta do GitHub: | |
| - Exporte sua chave GPG pública: | |
| ```bash | |
| gpg --armor --export 123ABCD123456789 | |
| ``` | |
| - Copie a saída. | |
| - No GitHub, vá para "Settings" -> "SSH and GPG keys" -> "New GPG key", cole sua chave pública e salve. | |
| ### 7. Assinar Commits | |
| Agora, quando você fizer um commit, pode assinar manualmente usando: | |
| ```bash | |
| git commit -S -m "Your commit message" | |
| ``` | |
| O `-S` é o que diz ao Git para assinar o commit. Se você configurou o Git para assinar commits automaticamente, não precisará do `-S`. | |
| ## Perguntas Frequentes sobre Assinatura dos Commits | |
| - **Se eu não tiver uma chave GPG, ainda posso fazer commits?** | |
| - Sim, a menos que a política do repositório exija commits assinados, você pode fazer commits sem uma chave GPG. | |
| - **E se eu estiver em uma máquina nova?** | |
| - Em uma nova máquina, você precisará instalar o GPG, gerar uma nova chave (ou importar uma existente) e configurar o Git para usá-la, seguindo os passos acima. | |
| - **Posso usar a mesma chave em várias máquinas?** | |
| - Sim, você pode exportar sua chave privada e importá-la em outra máquina. No entanto, faça isso com cuidado, pois a chave privada deve ser mantida segura. | |
| Assinar commits com uma chave GPG adiciona uma camada extra de segurança, especialmente em projetos colaborativos, garantindo que os commits sejam autênticos e não tenham sido alterados. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment