Git: introdução
Esta aula introduz o Git, um sistema de controle de versão distribuído, explicando sua importância no DevOps, os conceitos de repositório e commits, e o fluxo básico de trabalho. O aluno aprenderá a configurar o Git e realizar operações fundamentais como init, add, commit e log.
O Git é a ferramenta mais utilizada para controle de versão no desenvolvimento de software moderno, especialmente em ambientes DevOps. Ele permite rastrear alterações no código, colaborar com equipes e gerenciar versões de forma eficiente. Nesta aula, vamos explorar os conceitos fundamentais do Git e o fluxo básico de trabalho, preparando você para usar essa ferramenta essencial no dia a dia.
Antes de mergulharmos nos comandos, é importante entender por que o controle de versão é crítico para DevOps: ele possibilita automação, integração contínua e entrega contínua (CI/CD), além de garantir rastreabilidade e segurança nas mudanças de código.
Por que controle de versão
O controle de versão é um sistema que registra alterações em um arquivo ou conjunto de arquivos ao longo do tempo, permitindo que você recupere versões específicas posteriormente. Sem ele, você teria que gerenciar manualmente cópias de arquivos (ex: projeto-final-v2-corrigido.js), o que é propenso a erros e ineficiente.
No contexto DevOps, o controle de versão é a base para práticas como Integração Contínua (CI) e Entrega Contínua (CD). Ele permite que múltiplos desenvolvedores trabalhem simultaneamente no mesmo código, mantendo um histórico completo de quem fez o quê e quando. Além disso, facilita a automação de builds, testes e deploys, pois cada versão do código pode ser identificada e reproduzida de forma confiável.
Benefícios principais:
- Histórico completo de alterações
- Colaboração eficiente entre equipes
- Possibilidade de reverter para versões anteriores
- Ramificação (branching) para desenvolvimento paralelo
- Integração com ferramentas de CI/CD
Repositório
Um repositório Git (ou repo) é um diretório que contém todos os arquivos do seu projeto, juntamente com todo o histórico de versões armazenado em uma pasta oculta chamada .git. Existem dois tipos principais: repositório local (no seu computador) e repositório remoto (em um servidor como GitHub, GitLab ou Bitbucket).
Para criar um repositório local, use o comando git init dentro do diretório do projeto. Isso cria a estrutura do Git, permitindo que você comece a rastrear alterações. Já um repositório remoto é útil para compartilhar código e colaborar; você pode clonar um repositório remoto com git clone <url>.
Exemplo de criação de repositório local:
mkdir meu-projeto
cd meu-projeto
git init
Após o git init, o diretório .git é criado. Você pode verificar o status do repositório com git status.
Commits
Um commit é um snapshot do seu projeto em um determinado momento. Cada commit possui um identificador único (hash SHA-1), uma mensagem descritiva e metadados como autor e data. Os commits formam um histórico linear (ou ramificado) que permite navegar entre versões.
Para criar um commit, você primeiro adiciona as alterações à área de staging com git add e depois as consolida com git commit. A mensagem do commit deve ser clara e concisa, explicando o que foi alterado.
Exemplo de fluxo de commit:
echo "# Meu Projeto" > README.md
git add README.md
git commit -m "Adiciona README inicial"
O comando git log exibe o histórico de commits. Cada commit é imutável; você pode criar novos commits, mas não alterar os existentes (a menos que use rebase ou force push, com cuidado).
Fluxo básico
O fluxo básico do Git envolve três áreas: diretório de trabalho (working directory), área de staging (index) e repositório (HEAD). O ciclo típico é:
- Modificar arquivos no diretório de trabalho.
- Adicionar as alterações à área de staging com
git add. - Confirmar as alterações com
git commit, salvando no repositório.
Para enviar as alterações para um repositório remoto, use git push. Para receber atualizações, use git pull. Esses comandos são a base da colaboração.
Exemplo de fluxo completo com repositório remoto:
# Configurar Git (primeira vez)
git config --global user.name "Seu Nome"
git config --global user.email "email@exemplo.com"
# Clonar repositório remoto
git clone https://github.com/usuario/repo.git
cd repo
# Fazer alterações
echo "Nova linha" >> arquivo.txt
# Adicionar e commitar
git add arquivo.txt
git commit -m "Adiciona nova linha"
# Enviar para remoto
git push origin main
Lembre-se de que main é o nome da branch principal (antigamente master). Sempre verifique o status com git status antes de operações importantes.
Boas práticas
- Faça commits frequentes e com mensagens significativas.
- Não commite arquivos binários ou temporários (use
.gitignore). - Mantenha o repositório limpo: remova arquivos não rastreados antes de commitar.
- Sempre faça
git pullantes degit pushpara evitar conflitos. - Use branches para isolar funcionalidades e corrigir bugs.
Referências
- Documentação oficial do Git
- Pro Git Book (português)
- GitHub Hello World
- Tutoriais Git da Atlassian
- Learn Git Branching (interativo)
Exercícios
-
Crie um novo diretório chamado
exercicio-gite inicialize um repositório Git dentro dele. Verifique o status do repositório.✓ Resposta:mkdir exercicio-git cd exercicio-git git init git statusO comando
git initcria o diretório.git.git statusdeve mostrar que o repositório está vazio (sem commits). -
Crie um arquivo
index.htmlcom conteúdo básico HTML. Adicione-o à área de staging e faça um commit com a mensagem "Adiciona página inicial".✓ Resposta:echo "<!DOCTYPE html><html><head><title>Teste</title></head><body><h1>Olá</h1></body></html>" > index.html git add index.html git commit -m "Adiciona página inicial" -
Modifique o arquivo
index.htmladicionando um parágrafo. Verifique as diferenças comgit diffantes de adicionar à staging.✓ Resposta:echo "<p>Parágrafo adicionado.</p>" >> index.html git diffO comando
git diffmostra as alterações não staged. Depois você pode adicionar e commitar. -
Visualize o histórico de commits do repositório. Quantos commits aparecem?
✓ Resposta:git log --onelineSe você fez os exercícios anteriores, verá pelo menos 2 commits (o inicial e o da modificação).
-
Desfaça a última modificação no arquivo
index.html(antes de adicionar à staging) usandogit checkoutougit restore.✓ Resposta:git restore index.htmlOu, em versões mais antigas:
git checkout -- index.html. Isso reverte o arquivo ao estado do último commit.