Git para Desenvolvedores Python: Guia
Aprenda Git do zero para projetos Python. Comandos essenciais, branches, .gitignore, GitHub e fluxo de trabalho para iniciantes
Introdução
Git é o sistema de controle de versão mais usado no mundo. Ele registra cada alteração no seu código, permite colaborar com outros desenvolvedores e facilita reverter mudanças que causaram problemas. Para quem programa em Python, saber usar Git é tão importante quanto conhecer a linguagem em si.
Neste guia, vamos aprender Git do zero com foco em projetos Python, cobrindo desde os comandos básicos até o fluxo de trabalho com GitHub.
Instalando o Git
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install git
macOS
brew install git
Ou instale o Xcode Command Line Tools:
xcode-select --install
Windows
Baixe o instalador em git-scm.com e siga o assistente. Recomendo manter as opções padrão.
Configuração inicial
Após instalar, configure seu nome e email (usados nos commits):
git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"
Configure o editor padrão (opcional):
git config --global core.editor "code --wait" # VS Code
Verifique as configurações:
git config --list
Criando seu primeiro repositório
Vá até a pasta do seu projeto Python e inicialize o Git:
mkdir meu-projeto-python
cd meu-projeto-python
git init
O comando git init cria uma pasta oculta .git/ que armazena todo o histórico do projeto.
Entendendo o fluxo básico
O Git tem três áreas principais:
- Working Directory: seus arquivos no disco
- Staging Area (index): arquivos preparados para o próximo commit
- Repository: histórico de commits salvo
O fluxo é: editar arquivos, adicionar ao staging e fazer commit.
Comandos essenciais
git status
Mostra o estado atual dos arquivos:
git status
git add
Adiciona arquivos ao staging:
# Adicionar um arquivo especifico
git add app.py
# Adicionar todos os arquivos modificados
git add .
git commit
Salva as alterações do staging no histórico:
git commit -m "Adicionar funcao de calculo de media"
Escreva mensagens de commit descritivas. Evite mensagens genéricas como “update” ou “fix”.
git log
Visualiza o histórico de commits:
# Log completo
git log
# Log resumido
git log --oneline
# Log com grafico de branches
git log --oneline --graph
git diff
Mostra as alterações feitas:
# Alteracoes nao adicionadas ao staging
git diff
# Alteracoes no staging
git diff --staged
O .gitignore para projetos Python
O .gitignore define quais arquivos o Git deve ignorar. Para projetos Python, crie na raiz do projeto:
# Ambientes virtuais
venv/
.venv/
env/
# Cache do Python
__pycache__/
*.pyc
*.pyo
*.pyd
# Distribuicao
dist/
build/
*.egg-info/
# IDEs
.vscode/
.idea/
*.swp
# Variaveis de ambiente
.env
# Banco de dados local
db.sqlite3
# Jupyter
.ipynb_checkpoints/
# pytest
.pytest_cache/
# Coverage
htmlcov/
.coverage
Adicione o .gitignore antes do primeiro commit para evitar rastrear arquivos indesejados.
Trabalhando com branches
Branches permitem trabalhar em funcionalidades novas sem afetar o código principal:
# Criar e mudar para uma nova branch
git checkout -b nova-funcionalidade
# Listar branches
git branch
# Mudar entre branches
git checkout main
# Criar branch sem mudar
git branch correcao-bug
Fluxo com branches
# 1. Crie uma branch para a tarefa
git checkout -b adicionar-autenticacao
# 2. Faca alteracoes e commits
git add .
git commit -m "Implementar login de usuarios"
# 3. Volte para a main
git checkout main
# 4. Faca merge da branch
git merge adicionar-autenticacao
# 5. Apague a branch (opcional)
git branch -d adicionar-autenticacao
Resolvendo conflitos
Conflitos acontecem quando duas branches alteram a mesma parte de um arquivo. O Git marca as áreas em conflito:
<<<<<<< HEAD
def calcular_total(itens):
return sum(item.preco for item in itens)
=======
def calcular_total(itens, desconto=0):
total = sum(item.preco for item in itens)
return total * (1 - desconto)
>>>>>>> nova-branch
Para resolver, edite o arquivo mantendo o código correto, remova os marcadores (<<<<, ====, >>>>) e faça um commit.
Trabalhando com GitHub
Criando um repositório remoto
- Crie uma conta em github.com
- Clique em New repository
- Nomeie o repositório e clique em Create repository
Conectando seu projeto ao GitHub
git remote add origin https://github.com/seu-usuario/meu-projeto.git
git branch -M main
git push -u origin main
Enviando e recebendo alterações
# Enviar commits para o GitHub
git push
# Baixar alteracoes do GitHub
git pull
Clonando um repositório existente
git clone https://github.com/usuario/projeto.git
cd projeto
Pull Requests
Pull Requests (PRs) são a forma de propor alterações em projetos no GitHub:
- Crie uma branch e faça seus commits
- Faça push da branch:
git push origin minha-branch - No GitHub, clique em Compare & pull request
- Descreva as alterações e solicite revisão
- Após aprovação, faça o merge
Este fluxo é padrão em equipes profissionais e projetos de código aberto.
Desfazendo alterações
# Descartar alteracoes em um arquivo (antes do add)
git checkout -- arquivo.py
# Remover do staging (depois do add, antes do commit)
git reset HEAD arquivo.py
# Desfazer o ultimo commit (mantendo as alteracoes)
git reset --soft HEAD~1
# Criar um commit que reverte outro
git revert abc1234
Boas práticas para projetos Python
- Faça commits pequenos e frequentes, cada um com uma mudança lógica
- Escreva mensagens de commit claras no imperativo: “Adicionar”, “Corrigir”, “Remover”
- Sempre use
.gitignoreadequado para Python - Nunca faça commit de senhas, tokens ou arquivos
.env - Use branches para novas funcionalidades
- Faça pull antes de push para evitar conflitos
- Revise suas alterações com
git diffantes de commitar
Conclusão
Git é uma ferramenta essencial para qualquer desenvolvedor Python. Ele protege seu código contra perdas, facilita a colaboração e é requisito em praticamente todas as vagas de emprego. Comece com os comandos básicos apresentados neste guia e, à medida que se sentir confortável, explore funcionalidades mais avançadas como rebase, stash e cherry-pick. A prática diária é a melhor forma de dominar o Git.