Boas Práticas do Git
Vinte e cinco práticas do Git para equipes Rust - histórico limpo, commits revisáveis e hooks alinhados com CI.
-
mainé sempre a verdade da integração: Cada PR mesclado passa porfmt,clippyetest. -
Commit do
Cargo.lockpara aplicações:cargo build --lockedreproduzível em CI. -
IDs de ticket em cada commit:
feat(api): rota de health [API-42]para rastreabilidade de cherry-pick. -
Squash merge de features quando a política permite: Um ticket, um commit em
main. -
Branches de feature de curta duração: Rebase
maindiariamente para evitar conflitos de lockfile. -
Corte de
release/x.ypara trens coordenados: API + worker + migração são enviados juntos. -
Branch de release aceita apenas correções de bugs durante janelas de congelamento.
-
Cherry-pick para
release/*, nunca mesclemainemrelease/*. -
Tag a partir de
release/*após aprovação do staging:v2.6.0dispara o pipeline. -
Mescle
release/*de volta paramainapós o rollout e exclua a branch de release. -
Branches de hotfix a partir de tags de produção, não de
mainà frente da produção. -
Backport de todo hotfix para
mainerelease/*ativo. -
Nunca force o push em branches compartilhadas:
main,release/*,hotfix/*. -
--force-with-leaseapenas emfeat/*privadas antes da conclusão da revisão. -
Pre-commit espelha a CI:
cargo fmt,clippy -D warnings,cargo testrápido. -
target/e.envno gitignore global - nunca comite segredos ou artefatos de build. -
Use worktrees para revisão de PR em vez de stashing de builds longos.
-
gh pr create --fillapós o push - linkar verificações de CI no template do PR. -
Documente hotspots de conflito no PR ao tocar nas dependências do workspace
Cargo.toml. -
Assine commits quando a organização exigir assinatura SSH ou GPG.
-
Proteja
maincom verificações obrigatórias - fmt, clippy, test, build travado. -
Disciplina no tamanho do PR - separe refatorações de mudanças de comportamento.
-
Consciência do reflog - recupere branches excluídas dentro da janela de retenção.
-
Tag de releases binárias correspondendo às tags de contêiner (
v1.2.3). -
Entrada no CHANGELOG com tag de release - link da URL de comparação do git nas notas.
FAQs
Crate de biblioteca: commit do Cargo.lock?
Bibliotecas frequentemente omitem o lock no repositório; binários e workspaces comitam o lock.
Monorepo: um ou muitos locks?
Um único Cargo.lock na raiz do workspace é o padrão para workspaces Rust.
Relacionado
- Comandos Essenciais do Git
- Branching & Merging
- Configuração de CI para Rust
- Diretrizes de revisão de código
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.