Configuração Inicial do Ambiente
Para iniciar o uso do controle de versão, o primeiro passo é obter o instalador no site oficial git-scm.com. Após a instalação, certifique-se de que o executável está no PATH do sistema para utilizar o Git via terminal ou Git Bash.
A identificação do autor é essencial para o rastreio de commits. Você pode configurar isso de forma global ou específica para um projeto:
# Configuração global para todos os projetos
git config --global user.name "Dev Senior"
git config --global user.email "contato@empresa.com"
# Configuração local (dentro da pasta do projeto)
git config user.name "Nome do Projeto"
git config user.email "projeto@empresa.com"
# Verificação das configurações atuais
git config user.name
git config user.email
Gerenciamento de Arquivos e Repositório Local
Para transformar um diretório comum em um repositório Git, utilize o comando de inicialização:
git init
Isso criará um subdiretório oculto chamado .git, onde todo o histórico e metadados serão armazenados.
O Ciclo de Commit
O Git trabalha com três estados principais: diretório de trabalho (Working Directory), área de preparação (Staging Area/Index) e repositório (Repository).
# Adicionar arquivos específicos ou todos ao Staging
git add arquivo.txt
git add .
# Confirmar as alterações no repositório local
git commit -m "feat: implementação da estrutura inicial"
# Comparar mudanças entre o Working Directory e o último commit
git diff HEAD -- arquivo.txt
Monitoramento e Logs
Para entender o estado atual dos arquivos ou revisar o histórico de alterações, utilize:
git status
# Log detalhado
git log
# Log simplificado e visual
git log --oneline --graph --all --abbrev-commit
Dica de produtividade: crie um alias para logs complexos no seu arquivo ~/.bashrc:
alias git-flow="git log --graph --oneline --all"
Recuperação e Reversão de Alterações
O Git permite navegar entre versões passadas e desfazer erros com precisão:
# Retornar o projeto a um estado específico (ID do commit)
git reset --hard a1b2c3d
# Visualizar o histórico de referências (útil para recuperar commits perdidos)
git reflog
# Desfazer alterações no Working Directory (antes do add)
git checkout -- script.js
# Remover arquivo da Staging Area, mas manter as mudanças
git reset HEAD script.js
Trabalhando com Branches
Bracnhes (ramos) permitem o desenvolvimento paralelo de funcionalidades sem afetar o código principle (main/master).
# Listar e criar branches
git branch
git branch feature-login
# Alternar entre branches (Switch é a forma moderna)
git switch feature-login
# Ou criar e alternar simultaneamente
git checkout -b bugfix-header
# Mesclar alterações de outra branch para a atual
git merge feature-login
# Excluir uma branch após o merge
git branch -d feature-login
Resolução de Conflitos
Quando duas branches alteram a mesma linha do mesmo arquivo, ocorre um conflito durante o merge. O Git marcará o arquivo com delimitadores:
<<<<<<< HEAD
Conteúdo da branch atual
=======
Conteúdo da branch que está sendo integrada
>>>>>>> feature-branch
Para resolver, edite o arquivo manualmente, escolha a versão final, remova os marcadores e execute git add seguido de git commit.
Integração com Repositórios Remotos
Para colaborar, é necessário conectar seu repositório local a um servidor (GitHub, GitLab, Bitbucket).
Configuração de Autenticação SSH
O uso de chaves SSH evita a necessidade de digitar senhas constantemente:
# Gerar par de chaves RSA
ssh-keygen -t rsa -b 4096 -C "seu@email.com"
# Adicione o conteúdo de ~/.ssh/id_rsa.pub nas configurações da sua conta Git remota.
Sincronização de Dados
# Adicionar um endereço remoto com um apelido
git remote add origin git@github.com:usuario/projeto.git
# Enviar alterações locais para o servidor
git push -u origin main
# Atualizar o repositório local com mudanças remotas (Fetch + Merge)
git pull origin main
# Baixar metadados remotos sem aplicar mudanças ao código atual
git fetch origin
# Clonar um repositório existente para sua máquina
git clone git@github.com:usuario/projeto.git
A diferença fundamental entre git pull e git fetch é que o primeiro tenta mesclar automaticamente as alterações no seu diretório de trabalho, enquanto o segundo apenas baixa os dados, permitindo que você inspecione as mudanças antes da integração manual.