Comandos Essenciais do Git
O conjunto de comandos Git do dia a dia para equipes Rust - do clone ao commit e push, mais comandos de inspeção que tornam a depuração do histórico rápida.
Receita
git status -sb
git diff
git add Cargo.toml Cargo.lock src/
git commit -m "feat(api): add health route [API-42]"
git push -u origin feat/api-42-healthQuando usar isso:
- Iniciando trabalho em um branch de ticket
- Inspecionando alterações não commitadas antes da revisão
- Enviando branches de features e abrindo PRs
- Pesquisa rápida de histórico quando o CI falha no
main
Exemplo de Trabalho
git clone git@github.com:acme/billing-api.git
cd billing-api
git config user.name "Ada Lovelace"
git config user.email "ada@acme.com"
git checkout main
git pull --rebase origin main
git checkout -b feat/api-42-health
# ... editar arquivos Rust ...
cargo test -q
git add Cargo.toml Cargo.lock src/routes/health.rs
git commit -m "feat(api): add health route [API-42]"
git fetch origin
git rebase origin/main
git push -u origin feat/api-42-healthO que isso demonstra:
status -sbcurto para resumo de branch e stagingCargo.lockcommitado com alterações de dependência para binários- Rebase antes do push mantém o histórico linear
- ID do ticket na mensagem de commit para rastreabilidade
Mergulho Profundo
Referência de Comandos
| Tarefa | Comando |
|---|---|
| O que mudou? | git status, git diff, git diff --staged |
| Histórico | git log --oneline -20, git log -p src/lib.rs |
| Desfazer staging | git restore --staged file.rs |
| Descartar edições | git restore file.rs |
| Stash de trabalho em andamento | git stash push -m "wip health" |
| Atualizar branch | git pull --rebase origin main |
Notas de Rust
git blame src/error.rs
git log -S "AppError" --oneline -- src/Armadilhas
git add .pega segredos -.enventra nos commits. Correção:.gitignoremaisgit add -p.- Commit sem lockfile - CI
cargo build --lockedfalha. Correção: commitarCargo.lockpara aplicações. - Pull com commits de merge em features - histórico barulhento. Correção:
pull --rebaseem branches privados. - Force push em branches compartilhados - reescreve o histórico da equipe. Correção:
--force-with-leaseapenas no seufeat/*antes da revisão. - Add acidental enorme - diretório
target/. Correção: gitignore global para artefatos de build Rust.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| GitHub Desktop | Preferência por diff visual | Scripting de fluxos de trabalho |
jj (Jujutsu) | Experimentando com VCS | Padrão da equipe é Git CLI |
gh pr create | PR do terminal | GitHub CLI não instalado |
FAQs
merge vs rebase em branches de feature?
Rebase sobre main para um histórico de PR limpo em branches privados; merge em branches de release compartilhados conforme a política da equipe.
Como desfazer um commit mas manter as alterações?
git reset --soft HEAD~1 move o HEAD um commit para trás mantendo os arquivos em staging.
Diff contra main?
git diff origin/main...HEAD mostra o delta do PR no estilo de três pontos.
Relacionados
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+.