Melhores Práticas do Git
Um resumo condensado das 25 práticas Git mais importantes para equipes Python - histórico limpo, commits revisáveis e hooks alinhados com CI.
-
mainé sempre a verdade da integração: Cada PR mesclado passaruff,pyteste typecheck; nunca deixemainquebrado durante a noite (Comandos Essenciais do Git). -
Commit do lockfile:
uv.lock(oupoetry.lock) necessário parauv sync --frozenreproduzível em CI - nunca o ignore no git. -
IDs de ticket em cada commit:
feat(billing): tax line [BILL-42]- cherry-picks pararelease/*dependem de mensagens rastreáveis. -
Squash merge de features para
main: Um ticket, um commit no branch de integração quando a política da equipe permite. -
Branches de feature de curta duração: Alvo de 1-3 dias; rebase
maindiariamente para evitar conflitos de lockfile e Alembic. -
Corte de
release/x.ypara trens coordenados: API + worker + migração enviam juntos; novas features entram emmainaté a tag. -
Branch de release aceita apenas correções de bugs: Aplique com proteção de branch durante janelas de congelamento.
-
Cherry-pick para
release/*, nunca mesclemainemrelease/*: Mesclar puxa features não verificadas para o candidato a release. -
Tag de
release/*após aprovação de staging:v2.6.0aciona o pipeline de release; a mensagem da tag lista os implantáveis. -
Mesclar
release/*de volta paramainapós o rollout: Preservar o limite do trem; excluir o branch de release quando concluído. -
Branches de hotfix de tags de produção:
git checkout -b hotfix/2.5.1 v2.5.0- não demainquando ele está à frente da produção. -
Backport de cada hotfix: Cherry-pick o SHA da correção para
maine abrarelease/*se ainda estiver ativo. -
Nunca force-push em branches compartilhados: O histórico de
main,release/*,hotfix/*é evidência de auditoria. -
pre-commit espelha CI:
ruff check,ruff format,pytestrápido - os mesmos comandos do GitHub Actions (Configuração do Git). -
Modelo de PR exige nota de migração: Revisões Alembic precisam de plano de rollback ou estratégia de expandir-contrair.
-
Proteção de branch exige verificações de status: A política supera o sistema de honra para fluxos de trabalho necessários.
-
Nunca comite
.envou segredos: Apenas.env.example; produção via injeção de segredo da plataforma. -
Não comite
.venv/,__pycache__/oudist/: Artefatos pertencem a CI/CD, não ao git. -
Commits convencionais para automação de changelog: Emparelhe com semantic-release ou script de changelog personalizado se adotado.
-
Criação de tags restrita: Tags acionam a produção - regras ou função de gerente de release.
-
Monorepo: documente a estratégia de tags: Uma tag de monorepo vs tags por serviço - escolha uma e documente.
-
Mudanças de esquema de API + worker vinculadas: A derivação do contrato de evento quebra fluxos assíncronos - um PR ou PRs explicitamente vinculados.
-
Revise diffs de lockfile em PRs de dependência: Novas dependências transitivas inesperadas são sinais vermelhos na cadeia de suprimentos.
-
Documente o rollback nas notas de release: Digeitos de imagem, plano de rollback de migração, chave de desativação de feature flag.
-
Rebase interativo apenas em
feat/*privado:--force-with-leaseantes da revisão do PR; nunca em branches compartilhados.
FAQs
Branch develop do GitFlow ou trunk + release?
A maioria das equipes de serviço Python usa trunk + release/hotfix - mais simples que develop de longa duração, a menos que a organização exija GitFlow.
Quão rigoroso com o formato da mensagem de commit?
Aplique o ID do ticket e o modo imperativo; tipo/escopo convencional quando a automação de changelog depende disso.
Política de merge de PR do Dependabot?
Auto-merge de atualizações de patch quando CI verde; minor/major precisa de revisão humana do diff do lockfile.
Notebooks no git?
Siga Git para Dados/Notebooks - nbstripout obrigatório.
Relacionados
- Branching & Merging - estratégias
- Checklist de Resolução de Conflitos de Merge - processo de conflito
- GitHub CLI - automação de PR
- Pipelines de CI/CD - portões de fluxo de trabalho
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.