git Cheatsheet

2.47

Os comandos git que você vai usar todos os dias

Português: 2026-03-29

Git é uma daquelas ferramentas onde você consegue se virar com uns 15 comandos por anos — e aí um dia você acidentalmente faz rebase da sua branch main e de repente deseja ter aprendido mais alguns. Este cheatsheet é o "mais alguns" sem o ataque de pânico.

Eis algo que ninguém te conta cedo: git é basicamente um grafo acíclico dirigido de snapshots. Cada commit é um snapshot, cada branch é um ponteiro, e HEAD é apenas um post-it dizendo "você está aqui." Uma vez que isso clica, todo o resto — rebasing, cherry-picking, resetting — para de parecer magia negra e começa a parecer mover post-its.

Organizamos tudo por workflow em vez de alfabeticamente, porque ninguém pensa "preciso de um comando que começa com R." Você pensa "preciso desfazer aquele último commit" ou "preciso pegar a branch do meu colega." Comece com Workflow Básico se está começando, depois explore (o trocadilho é totalmente intencional) à medida que fica confortável. As seções de Stash e Reset vão salvar sua pele pelo menos uma vez por semana.

Uma regra de ouro: commit cedo, commit com frequência. Commits pequenos são fáceis de revisar, fáceis de reverter e fáceis de entender daqui a seis meses quando você estiver lendo git log e se perguntando o que o seu eu do passado estava pensando.

Workflow Básico
git init
Criar um novo repositório no diretório atual
git clone <url>
Baixar um repositório e todo seu histórico
git status
Mostrar arquivos alterados, staged e untracked
git add <file>
Adicionar um arquivo específico ao stage para o próximo commit
git add .
Adicionar todas as alterações no diretório atual ao stage
git commit -m "<msg>"
Fazer commit das alterações staged com uma mensagem
git push
Enviar commits locais para o remote
git pull
Buscar e mesclar alterações remotas na sua branch
Branching
git branch
Listar todas as branches locais
git branch -a
Listar branches locais e remotas
git branch <name>
Criar uma nova branch (mas continuar na atual)
git switch <name>
Mudar para uma branch existente
git switch -c <name>
Criar uma nova branch e mudar para ela
git branch -d <name>
Deletar uma branch (seguro — bloqueia se não mesclada)
git branch -D <name>
Forçar exclusão de uma branch, mesmo se não mesclada
git branch -m <new>
Renomear a branch atual
Merge e Rebase
git merge <branch>
Mesclar uma branch na sua branch atual
git merge --no-ff <branch>
Mesclar com um merge commit, mesmo se fast-forward for possível
git rebase <branch>
Reaplicar seus commits em cima de outra branch
git rebase --abort
Cancelar um rebase em andamento e restaurar o estado original
git rebase --continue
Continuar o rebase após resolver conflitos
git merge --abort
Cancelar um merge em andamento
git cherry-pick <hash>
Aplicar um único commit de outra branch
Stash
git stash
Guardar temporariamente todas as alterações não commitadas
git stash -u
Fazer stash incluindo arquivos untracked
git stash pop
Restaurar o stash mais recente e removê-lo
git stash apply
Restaurar o stash mais recente mas mantê-lo na lista
git stash list
Mostrar todos os stashes salvos
git stash drop
Deletar o stash mais recente
git stash drop stash@{n}
Deletar um stash específico por índice
Log e Diff
git log
Mostrar histórico de commits da branch atual
git log --oneline
Histórico compacto de uma linha por commit
git log --graph --oneline
Mostrar histórico de branches como um gráfico ASCII
git diff
Mostrar alterações não staged vs último commit
git diff --staged
Mostrar alterações staged vs último commit
git diff <branch1> <branch2>
Comparar duas branches
git show <hash>
Mostrar as alterações de um commit específico
git log -p <file>
Mostrar o histórico completo de alterações de um arquivo
Reset e Revert
git reset <file>
Remover um arquivo do stage mas manter as alterações
git reset HEAD~1
Desfazer último commit, manter alterações staged
git reset --soft HEAD~1
Desfazer último commit, manter alterações staged (explícito)
git reset --hard HEAD~1
Desfazer último commit e descartar todas as alterações permanentemente
git revert <hash>
Criar um novo commit que desfaz um commit anterior
git checkout -- <file>
Descartar alterações não staged de um arquivo específico
git restore <file>
Descartar alterações não staged (sintaxe moderna)
git restore --staged <file>
Remover um arquivo do stage (sintaxe moderna)
Remotes
git remote -v
Listar todos os remotes com suas URLs
git remote add <name> <url>
Adicionar um novo repositório remote
git fetch
Baixar alterações remotas sem mesclar
git fetch --prune
Buscar e remover branches de rastreamento remoto obsoletas
git pull --rebase
Buscar alterações remotas e reaplicar seu trabalho em cima
git push -u origin <branch>
Enviar uma branch e configurá-la para rastrear o remote
git push origin --delete <branch>
Deletar uma branch remota
Tags
git tag
Listar todas as tags
git tag <name>
Criar uma tag leve no commit atual
git tag -a <name> -m "<msg>"
Criar uma tag anotada com uma mensagem
git push --tags
Enviar todas as tags locais para o remote
git tag -d <name>
Deletar uma tag local
git push origin --delete <tag>
Deletar uma tag remota

Use git switch e git restore em vez de git checkout. O comando checkout faz coisas demais — switch cuida de branches, restore cuida de arquivos. Intenção mais clara, menos erros.

Execute git pull --rebase em vez de git pull simples para manter seu histórico linear. Melhor ainda, defina como padrão: git config --global pull.rebase true.

Errou a mensagem do último commit? git commit --amend -m "mensagem corrigida" reescreve. Só não faça amend em commits que você já fez push — isso reescreve histórico do qual seus colegas podem depender.

Use git stash -u em vez de git stash simples. A flag -u inclui arquivos untracked, que é quase sempre o que você quer. Sem ela, arquivos novos que você ainda não adicionou ficam para trás.

O git reflog é sua máquina do tempo. Mesmo após um reset --hard ruim, seus commits não desaparecem de verdade por cerca de 30 dias. Execute git reflog, encontre o hash que você quer e git reset --hard <hash> para recuperar.

Antes de um grande merge ou rebase, crie uma "branch de segurança" com git branch backup-antes-do-merge. Se tudo der errado, você sempre pode voltar ao ponto de partida. Seguro barato.

Use git log --oneline --graph --all para visualizar toda a topologia de branches no terminal. É a forma mais rápida de entender o que está acontecendo em um repositório com múltiplas branches ativas.

Related Tools