| Comando |
O que faz |
git log --oneline --graph --decorate --all |
Visão geral do histórico |
git log -p <arquivo> |
Histórico com diff do arquivo |
git log --since="2 days ago" --author=ana |
Filtra por data e autor |
git log --stat |
Arquivos alterados por commit |
git show <sha> |
Detalhe de um commit |
git diff / git diff --staged |
Não preparado / preparado |
git diff main...minha-branch |
Diferença desde a divergência |
git blame -L 40,60 <arquivo> |
Quem alterou cada linha |
| Comando |
O que faz |
git switch <branch> |
Troca de branch |
git switch -c <nova> |
Cria e troca |
git switch - |
Volta para a anterior |
git branch -vv |
Branches locais e seus upstreams |
git branch -d <branch> |
Remove branch já mesclada |
git branch --merged main |
O que já foi integrado (candidatas a remoção) |
git restore <arquivo> |
Descarta alteração local do arquivo |
git restore --staged <arquivo> |
Tira da área de preparo |
switch e restore substituem os usos ambíguos de checkout.
| Situação |
Comando |
| Corrigir a mensagem do último commit |
git commit --amend |
| Desfazer commit, manter alterações preparadas |
git reset --soft HEAD~1 |
| Desfazer commit, manter alterações no diretório |
git reset HEAD~1 |
| Descartar alterações locais |
git reset --hard HEAD |
| Reverter um commit já publicado |
git revert <sha> |
| Recuperar branch apagada ou reset errado |
git reflog e git reset --hard <sha> |
Em branch compartilhada, use revert (cria um commit novo) em vez de reset — reescrever
histórico publicado quebra o clone de todo mundo.
git reflog é a rede de segurança do Git: quase tudo que “sumiu” nos últimos 90 dias está
lá.
| Comando |
O que faz |
git rebase main |
Reaplica sua branch sobre a main |
git rebase --onto main antiga nova |
Move um trecho de commits |
git rebase --abort |
Cancela e volta ao estado anterior |
git rebase --continue |
Segue após resolver conflito |
git cherry-pick <sha> |
Traz um commit específico |
git push --force-with-lease |
Força sem sobrescrever trabalho alheio |
Prefira sempre --force-with-lease a --force: ele recusa o push se alguém publicou algo
que você não viu.
git status # o que está em conflito
git diff --name-only --diff-filter=U
git checkout --ours <arquivo> # mantém o lado atual
git checkout --theirs <arquivo> # mantém o lado que chega
git add <arquivo> && git rebase --continue
git merge --abort # desiste do merge
| Comando |
O que faz |
git stash push -m "wip" |
Guarda alterações |
git stash list / git stash pop |
Lista / restaura a última |
git stash push -u |
Inclui arquivos não rastreados |
git worktree add ../hotfix main |
Segunda cópia de trabalho, sem clonar de novo |
git worktree remove ../hotfix |
Remove a cópia |
Worktree é o jeito limpo de atender uma urgência sem abandonar o que está pela metade.
git log -S 'AKIA' --all --oneline # quando um texto entrou ou saiu (segredo!)
git log -G 'senha' --all # busca por regex no diff
git bisect start && git bisect bad && git bisect good <sha>
git bisect run ./teste.sh # automatiza a bissecção
git grep -n "TODO" $(git rev-list --all) # procura em todo o histórico
| Comando |
O que faz |
git remote -v |
Lista remotos |
git fetch --all --prune |
Atualiza e remove referências mortas |
git pull --rebase |
Traz sem criar merge desnecessário |
git push -u origin <branch> |
Publica e define upstream |
git clone --filter=blob:none <url> |
Clone parcial (repositório grande) |
git clone --depth 1 <url> |
Clone raso (CI) |
git config --global pull.rebase true
git config --global push.autoSetupRemote true
git config --global rerere.enabled true # lembra resoluções de conflito
git config --global core.autocrlf input # Linux/macOS
git config --global core.autocrlf true # Windows
git config --global diff.algorithm histogram
reset --hard descarta alterações não commitadas sem recuperação (o reflog só guarda o
que foi commitado).
git clean -fd apaga arquivos não rastreados. Rode -n antes para simular.
- Arquivo já rastreado não passa a ser ignorado por entrar no
.gitignore: use
git rm --cached.
- Reescrever histórico não apaga um segredo vazado: rotacione a credencial primeiro.
- No Windows, fim de linha errado gera diffs de arquivo inteiro; configure
autocrlf.