Todo mundo aprende Git da mesma forma: git init, git add ., git commit -m "primeiro commit", git push.
E aí fica parado aí.
O problema é que o Git tem um repertório enorme de comandos que fazem diferença no dia a dia — e que praticamente nenhum tutorial para iniciantes menciona. Você só descobre quando algo dá errado, às 23h, com pull request aberto.
Esse artigo é pra mudar isso.
1. git stash — o bolso secreto do Git
Você está no meio de uma feature, o código tá pela metade, e chega uma mensagem: "precisa corrigir um bug urgente na main". O que você faz?
Se você fizer git checkout assim, o Git vai reclamar. Se fizer commit, vai sujar seu histórico com um "WIP: salvando para mudar de branch".
A solução é o stash:
git stash
Isso guarda todas as suas alterações não commitadas num lugar temporário e deixa o diretório limpo. Aí você resolve o bug, volta, e restaura:
git stash pop
Quer ver o que tem salvo?
git stash list
Você pode ter vários stashes e dar nome a eles:
git stash push -m "feature de login pela metade"
2. git log --oneline — porque o log padrão é horrível
Já abriu um git log e ficou olhando pra aquele bloco gigante de texto? Tem um jeito muito melhor:
git log --oneline
Saída:
a3f1c2e feat: adiciona autenticação JWT
9b2d441 fix: corrige validação do formulário
3c8e109 chore: atualiza dependências
Limpo, legível, um commit por linha.
Quer ver as branches também?
git log --oneline --graph --all
Isso desenha uma árvore visual das branches no terminal. Parece coisa de hacker, mas é só Git.
3. git diff — antes de commitar, veja o que você fez
Sabe aquele momento em que você digita git add . sem nem olhar o que tá mudando? Pois é, todo mundo faz. Mas o jeito certo é revisar antes:
git diff
Isso mostra linha por linha o que mudou nos arquivos que ainda não foram adicionados ao staging.
Já adicionou com git add e quer revisar antes de commitar?
git diff --staged
Diferença específica entre dois commits?
git diff abc1234 def5678
Revisar o diff virou hábito quando você para de commitar lixo acidentalmente.
4. git commit --amend — consertando o último commit
Commitou com a mensagem errada? Esqueceu de incluir um arquivo? Não precisa criar um novo commit só por isso:
git commit --amend
Isso abre o editor com a mensagem do último commit para você editar. Salva, fecha, e pronto.
Quer mudar a mensagem direto sem abrir o editor?
git commit --amend -m "feat: adiciona autenticação com JWT"
Quer incluir um arquivo esquecido?
git add arquivo-esquecido.py
git commit --amend --no-edit
⚠️ Atenção: só use
--amendem commits que ainda não foram enviados para o repositório remoto. Se você já fez push, vai ter problemas na hora de fazer push novamente.
5. git restore — desfazendo alterações sem drama
Você mudou um arquivo e se arrependeu. Quer voltar para como estava no último commit?
git restore nome-do-arquivo.py
Isso descarta todas as alterações locais naquele arquivo. Sem commit, sem complicação.
Quer desfazer um git add (tirar do staging)?
git restore --staged nome-do-arquivo.py
Isso não apaga as mudanças, só retira o arquivo da área de staging. As alterações continuam lá.
6. git revert — desfazendo um commit sem reescrever a história
Fez um commit que não devia? A tentação é usar git reset, mas tem um problema: ele reescreve o histórico, o que pode causar bagunça em times.
O git revert é mais seguro: ele cria um novo commit que desfaz as mudanças do commit anterior:
git revert abc1234
O histórico continua intacto, você só adiciona um commit novo que reverte o estrago. Perfeito para trabalhar em equipe.
7. git cherry-pick — pegando só o que você quer
Imagina que você tem um bugfix numa branch de feature, mas precisa aplicar esse fix na main agora, sem fazer merge de tudo.
O cherry-pick pega um commit específico e aplica em outra branch:
git cherry-pick abc1234
Vai até a branch de destino, roda esse comando com o hash do commit que você quer, e pronto. Só aquele commit é copiado.
Bônus: aliases que vão te poupar tempo
Cansado de digitar git log --oneline --graph --all toda hora? Cria um alias:
git config --global alias.tree "log --oneline --graph --all"
Agora é só digitar:
git tree
Você pode criar aliases para qualquer comando. Alguns que uso bastante:
git config --global alias.st "status"
git config --global alias.co "checkout"
git config --global alias.unstage "restore --staged"
Resumindo
| Comando | Quando usar |
|---|---|
git stash |
Guardar trabalho em progresso para trocar de contexto |
git log --oneline |
Ver histórico de forma legível |
git diff --staged |
Revisar o que vai entrar no próximo commit |
git commit --amend |
Corrigir o último commit (mensagem ou arquivos) |
git restore |
Desfazer alterações em arquivos |
git revert |
Desfazer um commit com segurança em equipe |
git cherry-pick |
Aplicar um commit específico em outra branch |
Esses comandos não são avançados — eles são essenciais. São o que separa alguém que "usa Git" de alguém que realmente trabalha bem com ele.
Tem algum comando que salvou sua vida e não tá nessa lista? Comenta aí 👇
Esse artigo faz parte do conteúdo semanal da **Matilha do Código* — uma comunidade pra quem quer aprender Python, Git e SQL de verdade, sem enrolação. Me segue aqui no dev.to e no Instagram @matilhadocodigo pra não perder os próximos.*
Top comments (0)