Configuração e Inicialização de Repositórios Git

Gerenciamento de Configurações do Git

O comando git config permite visualizar e modificar configurações em três níveis: sistema (--system), global (--global) e local/repositório (--local).

Consultando Configurações

  • Exibir todas as conifgurações ativas: git config -l
  • Verificar configurações de escopo global: git config --global --list
  • Filtrar por uma chave específica: git config user.email

Por padrão, ao definir um valor sem especificar o escopo, a alteração afeta apenas o repositório atual (escopo local).

Editando Configurações

Para editar arquivos de configuração diretamente em um editor de texto, utilize:

git config -e

Caso queira alterar o editor padrão utilizado pelo Git:

git config --global core.editor "nano"

Vinculando um Repositório Remoto

Após criar um repositório local com git init, é necessário conectá-lo a um repositório remoto. O exemplo abaixo demonstra o processo completo:

# Adiciona a origem remota
git remote add upstream https://github.com/usuario/projeto.git

# Renomeia a branch principal
git branch -M main

# Envia os commits locais e define o upstream
git push -u upstream main

Caso precise alterar a URL do repositório remoto posteriormente:

git remote set-url upstream https://github.com/novo-usuario/novo-projeto.git

Para verificar se a configuração remota está correta:

git remote -v

Adição Parcial de Alterações

Quando você modificou várias partes de um arquivo e deseja separar o que será commitado, o Git oferece o modo interativo:

git add -p arquivo.txt

Isolamento de Contas em Máquinas Compartilhadas

Em ambientes onde múltiplos usuários utilizam o mesmo sistema, cada conta do GitHub exige uma chave SSH distinta. Como o GitHub descontinuou a autenticação por senha, as alternativas são tokens de acesso pessoal ou chaves SSH.

Gerando uma Nova Chave SSH

Cada chave SSH deve estar associada a apenas uma conta do GitHub. Para gerar uma chave em um local específico:

ssh-keygen -t ed25519 -C "seu_email@exemplo.com" -f ~/.ssh/chave_projeto

Parâmetros:

  • -t: tipo de criptografia (ed25519 é o padrão moderno recomendado)
  • -C: comentário identificador (geralmente o e-mail)
  • -f: caminho e nome do arquivo de chave

Registrando a Chave no GitHub

Copie o conteúdo do arquivo .pub gerado e adicione em: GitHub → Settings → SSH and GPG keys → New SSH key

Configurando o Git para Usar a Chave Correta

O segredo para o isolamento está na propriedade sshCommand dentro da configuração do repositório. Abaixo está um exemplo do arquivo .git/config:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    sshCommand = ssh -i ~/.ssh/chave_projeto -F /dev/null
[remote "upstream"]
    url = git@github.com:Organizacao/Projeto.git
    fetch = +refs/heads/*:refs/remotes/upstream/*
[branch "main"]
    remote = upstream
    merge = refs/heads/main
[user]
    name = Seu Nome
    email = seu_email@exemplo.com

A diretiva -F /dev/null garante que apenas a chave especificada por -i seja utilizada, ignorando o agente SSH padrão do sistema.

Testando a Conexão SSH

ssh -T git@github.com

Fluxo Completo de Inicailização

1. Configuração Inicial do Usuário

git config --global user.name "Seu Nome"
git config --global user.email "seu_email@exemplo.com"

2. Criação do Repositório Local

navigate_to desired_directory
git init

3. Conexão com o Repositório Remoto

git remote add upstream git@github.com:usuario/repositorio.git

4. Sincronização Inicial

Se o repositório remoto já contém arquivos, é obrigatório sincronizar antes de enviar novos commits:

git pull upstream main

5. Envio de Alterações

# Adiciona mudanças à área de staging
git add .

# Cria um commit com mensagem descritiva
git commit -m "feat: configuracao inicial do projeto"

# Sincroniza com o remoto
git push -u upstream main

Correção de Informações do Autor

Caso você tenha feito um commit com informações de usuário incorretas, é possível corrigir o último commit:

git commit --amend --reset-author

Antes de executar o comando acima, atualize os dados de usuário no arquivo .git/config ou via git config user.name e git config user.email. O editor que se abrirá permite também editar a mensagem do commit. Após salvar e sair, verifique com git log se as informações foram atualizadas corretamente.

Resolvendo Conflito de Push

Ao tentar enviar a correção para o repositório remoto, você pode encontrar um erro de rejeição (non-fast-forward), pois o histórico local divergiu do remoto. Para projetos onde você tem controle total e deseja sobrescrever o histórico remoto:

git push -f

Atenção: O push forçado reescreve o histórico remoto e deve ser evitado em repositórios compartilhados com outros colaboradores.

Tags: Git SSH GitHub repositories configuration-management

Publicado em 6-25 03:02