Configuração do Git
Padrões e aliases sensatos do Git economizam horas para equipes Rust: pulls com rebase, logs úteis, hooks que espelham a CI e ignores globais para artefatos target/.
Receita
git config --global init.defaultBranch main
git config --global pull.rebase true
git config --global fetch.prune true
git config --global rerere.enabled true
git config --global alias.st 'status -sb'
git config --global alias.lg "log --oneline --graph -20"
git config --global alias.fp 'push --force-with-lease'Quando usar isso:
- Onboarding em uma nova máquina
- Padronização da experiência do desenvolvedor da equipe
- Adição de hooks pre-commit para
cargo fmteclippy
Exemplo de Trabalho
# ~/.gitignore_global
target/
**/*.rs.bk
.env
.env.*
!.env.examplegit config --global core.excludesfile ~/.gitignore_global# .pre-commit-config.yaml (repo)
repos:
- repo: local
hooks:
- id: rustfmt
name: rustfmt
entry: cargo fmt --all --
language: system
pass_filenames: false
- id: clippy
name: clippy
entry: cargo clippy --all-targets -- -D warnings
language: system
pass_filenames: falseO que isso demonstra:
- Ignora globais previnem acidentes com
target/ rererereutiliza resoluções de conflito gravadas- Pre-commit corresponde aos portões da CI
Mergulho Profundo
Configurações Úteis
| Configuração | Efeito |
|---|---|
merge.conflictstyle zdiff3 | Mostra o ancestral comum em conflitos |
push.autoSetupRemote true | O primeiro push configura o upstream |
core.autocrlf input | Finais de linha LF em macOS/Linux |
Modelo de Commit
# .gitmessage
# <tipo>(<escopo>): <assunto> [TICKET]
#
# corpo: por quê, não o quê
git config commit.template .gitmessage
Armadilhas
- Hábito de bypass de hook -
--no-verifya cada commit. Correção: corrija hooks lentos, não os desabilite. - Conflitos de alias globais - funções de shell ofuscam aliases do git. Correção: documente os aliases padrão da equipe.
- Commits assinados não configurados - push bloqueado em branch protegido. Correção:
ssh-keygene configuração de assinatura do GitHub antecipadamente. - Finais de linha do Windows -
core.autocrlfsurpreende na CI. Correção:.gitattributes* text=auto eol=lf. - Segredos na configuração do git - tokens em URLs registrados. Correção: helper de credenciais, não senhas embutidas.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
lefthook | Hooks monorepo multilíngue | Repositório simples apenas Rust |
husky | Poliglota JS+Rust | Puro Rust |
| Apenas CI manual | Atrito local zero de hooks | Desvio de estilo antes do push |
FAQs
Configuração global vs local?
Identidade e aliases globais; versões de hooks locais por repositório para reprodutibilidade.
Helper de credenciais no macOS?
git config --global credential.helper osxkeychain.
Manuseio de arquivos grandes?
Use Git LFS para binários; prefira construir artefatos de release na CI em vez de cometê-los.
Relacionados
- Comandos Essenciais do Git
- Configuração de pre-commit e editor
- Configuração de CI para Rust
- Melhores Práticas do Git
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+.