Problema: o Git quer seguir TODOS os seus ficheiros, até os inúteis:
.tmp)node_modules/).env).DS_Store)Solução: .gitignore
mkdir demo-gitignore && cd demo-gitignore
git init
# Criar ficheiros de teste
echo "print('app')" > app.py
echo "SECRET_KEY=123456" > .env
mkdir temp && echo "cache" > temp/cache.tmp
mkdir logs && echo "error logs" > logs/app.log
# Sem .gitignore, o Git quer seguir tudo
git status # Ver todos os ficheiros
# Criar .gitignore
cat > .gitignore << EOF
# Ficheiros sensíveis
.env
*.secret
# Pastas temporárias
temp/
logs/
build/
# Ficheiros de sistema
.DS_Store
*.tmp
EOF
# Agora o Git ignora estes ficheiros
git status # Mais limpo!Padrões úteis:
| Padrão | Ignora |
|---|---|
*.log | Todos os ficheiros .log |
temp/ | A pasta temp inteira |
.env* | Todos os ficheiros que começam por .env |
!important.log | Exceção: guardar este ficheiro |
build/** | Tudo em build recursivamente |
Modelos prontos a usar:
__pycache__/, *.pyc, .envnode_modules/, npm-debug.log*.class, target/# Verificar se um ficheiro é ignorado
git check-ignore -v .env # Se ignorado: mostra a regra
git check-ignore logs/app.log # Se ignorado: nada mostrado
# Forçar a adição de um ficheiro ignorado (se for mesmo necessário)
git add -f fichier-ignore.tmp
# Ver todos os ficheiros não ignorados
git ls-filesRegra de ouro: crie o .gitignore no INÍCIO do projeto!