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.