Melhores Práticas de Git & GitHub
Um resumo condensado das 25 práticas mais importantes de Git e GitHub para equipes de backend Node.js - conteúdo portátil compartilhado; personalize por convenções da organização.
Busque em todas as páginas da documentação
Um resumo condensado das 25 práticas mais importantes de Git e GitHub para equipes de backend Node.js - conteúdo portátil compartilhado; personalize por convenções da organização.
main é sempre a verdade da integração: Todo PR mesclado passa CI; nunca deixe main quebrado durante a noite - pipelines de produção assumem um tip verde (Git Basics for Node Teams).
Commite o lockfile: package-lock.json (ou pnpm-lock.yaml) é necessário para npm ci reproduzível - nunca o ignore no gitignore.
IDs de Ticket em cada commit: feat(orders): endpoint de reembolso [API-412] - cherry-picks para release/* e hotfix/* dependem de mensagens rastreáveis.
Squash merge de funcionalidades para main: Um ticket, um commit no branch de integração - simplifica o cherry-pick para as lanes de release.
Branches de funcionalidade de curta duração: Alvo de 1-3 dias; mescle ou rebase main diariamente para evitar conflitos de migração e lockfile.
Corte de release/X.Y para trens coordenados: API + worker + migração são enviados juntos; novas funcionalidades pousam apenas em main até a tag.
Branch de release aceita apenas correções de bugs: Aplique com proteção de branch, não lembretes no Slack durante janelas de congelamento.
Cherry-pick para release/*, nunca mescle main em release/*: Mesclar puxa funcionalidades não verificadas para o candidato a release.
Tag a partir de release/* após aprovação do staging: v2.6.0 dispara CI de release; a mensagem da tag lista os deployables.
Mescle release/* de volta para main após o rollout: Preserve o limite do trem; exclua o branch de release quando concluído.
Branches de hotfix a partir de tags: git checkout -b hotfix/2.5.1 v2.5.0 - não de main quando ele está à frente da produção.
Backport de todo hotfix: Cherry-pick o SHA da correção para main e abra release/* se ainda estiver ativo.
Nunca force-push branches compartilhados: O histórico de main, release/*, hotfix/* é evidência de auditoria.
Hooks de pré-commit espelham CI: Husky executa typecheck, lint, test - o mesmo que pr-checks.yml (GitHub Actions Integration).
Template de PR exige nota de migração: Mudanças de esquema precisam de SQL de rollback ou plano de expansão/contração.
Proteção de branch exige verificação de quality: Política supera o sistema de honra.
Nunca comite .env ou segredos: Apenas .env.example; produção via injeção da plataforma.
Não comite dist/ ou node_modules/: Artefatos de build pertencem ao CI/CD, não ao git.
Commits convencionais para automação de changelog: Emparelhe com semantic-release se adotado.
Criação de tags restrita: Tags disparam 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.
Mudanças de esquema de Worker + API em um único PR ou PRs vinculados: Derivação de contrato de eventos quebra fluxos assíncronos.
Revise diffs de lockfile em PRs de dependência: Scripts postinstall inesperados são sinais de alerta.
Documente o rollback na mensagem da tag de release: Digitos de imagem, plano de migração para baixo, kill switch de feature flag.
Rebase interativo apenas em feat/* privado: --force-with-lease antes da revisão do PR; nunca em branches compartilhados.
Prefira trunk (main) + release/* curto + hotfix/* para serviços Node em tags de contêiner. develop de longa duração diverge dos SHAs de produção.
main + branches de funcionalidade + squash merge + Husky + deploy baseado em tag. Adicione branches de release quando o QA de staging entrar.
Tags disparam pipelines de release; PRs disparam portões de qualidade; a proteção de branch conecta ambos. Veja CI/CD Best Practices.
Implantar o tip de main em produção enquanto o congelamento de release/2.6.0 está em andamento - use tags e lanes de branch consistentemente.
Versões do Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5, e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026