DEV Community

Cover image for Git além do push: os comandos que ninguém te ensinou
Matilha do Codigo
Matilha do Codigo

Posted on

Git além do push: os comandos que ninguém te ensinou

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Quer ver o que tem salvo?

git stash list
Enter fullscreen mode Exit fullscreen mode

Você pode ter vários stashes e dar nome a eles:

git stash push -m "feature de login pela metade"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Saída:

a3f1c2e feat: adiciona autenticação JWT
9b2d441 fix: corrige validação do formulário
3c8e109 chore: atualiza dependências
Enter fullscreen mode Exit fullscreen mode

Limpo, legível, um commit por linha.

Quer ver as branches também?

git log --oneline --graph --all
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Diferença específica entre dois commits?

git diff abc1234 def5678
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Quer incluir um arquivo esquecido?

git add arquivo-esquecido.py
git commit --amend --no-edit
Enter fullscreen mode Exit fullscreen mode

⚠️ Atenção: só use --amend em 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Agora é só digitar:

git tree
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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)