3 pontos por GN⁺ 2024-11-26 | 1 comentários | Compartilhar no WhatsApp

Como configurar minha identidade no Git

  • Introdução: este artigo explica como gerenciar identidades adequadas ao seu ambiente de trabalho por meio da configuração do Git. O autor descobriu uma forma de usar includeIf para incluir arquivos com base em condições específicas.

  • Configuração do Git:

    • Usando includeIf, é possível incluir arquivos de configuração diferentes do Git de acordo com diretórios específicos.
    • Por exemplo, é possível configurar para que diretórios Git em ~/code incluam ~/.config/git/personal, enquanto os que estão em ~/work incluam ~/.config/git/work.
    • Cada arquivo contém informações como nome de usuário, e-mail e chave de assinatura.
  • Configuração baseada em URL remota:

    • Usando hasconfig:remote.*.url, é possível montar a configuração do Git de forma condicional quando uma determinada URL remota existir.
    • Por exemplo, em diretórios que tenham um remoto como github.com:orgname/**, é possível configurar o uso de ~/.config/git/config-gh-org.
  • Configuração de chaves SSH:

    • É necessário configurar chaves SSH para poder fazer pull e push nos remotos.
    • No arquivo ~/.ssh/config, é possível definir Host e IdentityFile para usar a chave SSH apropriada para cada remoto.
    • Para usar IdentityFile diferentes com o mesmo Hostname, é preciso definir valores de Host distintos.
  • Uso da configuração SSH no Git config:

    • Para usar uma configuração SSH diferente em repositórios específicos, é possível substituir URLs usando insteadOf no Git config.
    • Por exemplo, em vez de github.com:orgname, pode-se usar gh-work:orgname para aplicar a configuração SSH correta.
  • Considerações:

    • Essa abordagem pode ter problemas, e o autor gostaria de receber feedback sobre a existência de uma forma melhor.

Material de referência

  • O autor consultou vários posts de blog sobre como gerenciar múltiplas identidades no Git.

1 comentários

 
GN⁺ 2024-11-26
Comentários no Hacker News
  • Explica como separar identidades de SSH e Git usando um nome como gh-work. Todo repositório Git clonado com gh-work passa a seguir a configuração de gh-work.inc e usa a mesma chave de assinatura da configuração SSH

  • Ao trabalhar em uma startup, havia um colega que mudava a identidade todos os dias para nomes de conto de fadas. Isso não ajudava na perícia de controle de versão, mas talvez servisse para lembrar que é possível colocar qualquer coisa na configuração de identidade

  • Sugere adicionar aliases de identidade ao .gitconfig, para executar comandos como git config-company ou git config-personal depois de inicializar ou clonar um repositório

  • Explica como gerenciar submódulos facilmente definindo o comando SSH no ~/.gitconfig, sem precisar modificar o ~/.ssh/config

  • Apresenta como gerenciar configurações do Git por diretório usando includeIf e hasconfig:remote. Isso também é útil ao clonar repositórios

  • Recomenda fortemente que consultores usem um dispositivo separado para trabalho ou, no mínimo, um usuário de sistema operacional separado. Usar um dispositivo pessoal para trabalho pode ser arriscado

  • Explica como gerenciar configurações do Git usando NixOS e home-manager. Usa a condição hasconfig:remote para definir um e-mail específico

  • Explica como manter a complexidade do SSH em ~/.ssh e incluir configurações separadas por cliente ou projeto. Quando não há nomes de host como GitHub, são atribuídos aliases

  • Explica como usar gitdir para separar trabalho e projetos pessoais. hasconfig:remote é um divisor de águas

  • Explica como separar repositórios de trabalho e pessoais em ~/dev e ~/src. Arquivos de configuração Git diferentes são incluídos conforme cada caminho

  • Explica como configurar arquivos .gitconfig pessoais e de trabalho para usar e-mails e chaves de assinatura diferentes. A assinatura GPG é ativada para assinar commits