Referência essencial de comandos Git para desenvolvedores
Do clone ao rebase à recuperação depois de um force-push — os comandos Git que você realmente usa, com invocações copiáveis e explicações de uma linha.

Mais utilitários que combinam com este guia:
Por que isso importa
Um dev novo dá git push --force na main do time e apaga commits de ontem. A recuperação leva 30 segundos com git reflog — se você souber que existe. Git é implacável na sintaxe mas generoso em redes de segurança; muitas pessoas usam 10% do poder porque nunca foram além de clone, commit, push. Um cheatsheet categorizado é uma das referências com maior retorno que um time pode ter.
Três cenários reais
git rebase -i main com pick/squash. A referência mostra os verbos do rebase interativo.
Histórico da main limpo
git bisect start good bad, marque cada teste como bom ou ruim até isolar o culpado.
Causa raiz em ~log₂ commits
git reflog lista cada movimento de HEAD; git reset --hard <reflog-id> restaura.
Desastre evitado
Passo a passo — usando a referência
Abra a referência de comandos Git.
Navegue por etapa do fluxo
Setup, commits diários, branches, sincronização com remotes, reescrita de histórico, depuração, recuperação.
Busque um verbo
Digite “rebase”, “stash” ou “cherry-pick”; aparecem comandos com explicação.
Copie a invocação canônica
Cada entrada tem uma linha “o que você digita” e variante multilinha com opções.
Leia o aviso
Muitos alertam sobre
--force,pull --rebasevs merge padrão, etc.Fixe comandos frequentes
Favorite categorias (ex.: “reescrita de histórico”) para momentos de estresse.
Objetivo
Abrir feature, salvar WIP, sincronizar com main,
terminar e enviar para PR.Comandos
git checkout -b feature/payment-retry
# trabalho, trabalho, trabalho
git add . && git commit -m "WIP retry logic"
git fetch origin
git rebase origin/main
# resolva conflitos, depois:
git push -u origin feature/payment-retrySintoma
Você rodou `git reset --hard HEAD~5`
e os últimos 5 commits parecem perdidos.Correção
git reflog # ache o SHA antes do reset
git reset --hard <SHA> # restaure HEAD
Dicas avançadas
- Use
git switchegit restoreem vez de sobrecarregarcheckout.switché para branches;restorepara arquivos — menos ambiguidade. --first-parentemgit logachata ruído de merge e mostra só a linha principal.- Configure
pull.rebase = trueparagit pullrebase por padrão — menos commits “merge merge merge”. git commit --amendcorrige o último commit;git rebase -icorrige commits antigos. Não faça amend depois de push em branch compartilhada.
Armadilhas comuns
Erro comum
Force-push apaga trabalho de colega
git push --force-with-lease em vez de --force aborta se o remote mudou desde o último fetch. Use sempre; reserve --force a branches só suas.
Erro comum
Secrets commitados por engano
git filter-repo (ou BFG) reescreve histórico para remover o arquivo. Gire o segredo vazado na hora.
Erro comum
`git rebase main` em vez de `git rebase origin/main`
Você pode rebase contra uma main local velha. Sempre git fetch antes ou rebase explícito em origin/main.
Quando esta não é a ferramenta certa
- Visualizar grafo de branches — GUI como Lazygit, GitKraken ou Git Graph no VS Code é mais rápido que
git log --graph. - Code review —
git diffmostra diff; GitHub/GitLab/Gerrit rastreiam comentários e aprovações. - Binários grandes — Git LFS ou
git annex, não Git vanilla.
FAQ
O que é "fast-forward"?
Merge fast-forward só move o ponteiro ao longo de commits em linha — sem merge commit. Comum quando o alvo não avançou desde o início da sua branch.
Quando usar `git stash`?
Para WIP realmente descartável. Para trabalho sério, prefira commit wip numa branch temporária — stash some fácil.
Entradas do reflog duram para sempre?
Não. Expiram em ~90 dias (normais) e ~30 dias (inalcançáveis). Depois só git fsck --lost-found pode ajudar.
Próximos passos
- Combine Git com a referência Linux para utilitários de shell (grep, find, awk).
- Inspecione URLs e portas com o analisador de URL.
- Compare códigos HTTP de
git push(401, 403, 502) com a referência de status HTTP.