Git é uma daquelas ferramentas que a gente aprende 10% dos comandos e usa 100% do tempo. Tem três flags em particular que mudaram minha relação com o git e que ninguém me ensinou — descobri tropeçando no man git num plantão chato. Compartilho.
1. git log --oneline --graph --all
A flag não é uma só, é uma combinação. Mas ela transforma o git log de uma lista linear sem fim em um mapa visual do repositório inteiro.
git log --oneline --graph --all
O que cada parte faz:
--onelinecolapsa cada commit em uma linha só (hash curto + título)--graphdesenha as branches com caracteres ASCII--allmostra todas as branches, não só a atual
Quando eu uso: sempre que entro num repo novo ou quando preciso entender o que aconteceu numa branch que tá esquisita. É o primeiro comando depois de um git pull confuso.
Bônus: adiciona --decorate pra ver tags e nomes de branches inline.
2. git stash push -m "mensagem" -- caminho/especifico
Todo mundo conhece git stash. Quase ninguém sabe que dá pra dar stash em arquivos específicos com mensagem.
git stash push -m "ajuste de css experimental" -- src/components/Button.css
Por que isso importa: o git stash padrão guarda tudo que tá modificado, sem nome. Em duas semanas você tem 8 stashes anônimos e nenhuma ideia do que cada um faz. Com mensagem e caminho, cada stash é uma intenção clara.
Pra ver o que tem guardado:
git stash list
Pra aplicar um stash específico:
git stash apply stash@{2}
Quando eu uso: quando tô trabalhando em duas features ao mesmo tempo (sim, eu sei que não devia) e preciso pausar uma sem fazer commit ainda. Ou quando descubro que aquele teste que tá quebrando não é da minha PR — guardo o conserto em separado pra abrir uma PR depois.
3. git commit --fixup=<hash>
Esse aqui é o tipo de coisa que muda como você escreve commits. A flag cria um commit especial marcado pra ser “amassado” com outro commit antigo no próximo rebase.
Cenário comum: você abre uma PR. O revisor pede uma mudança pequena num arquivo. Você poderia:
- Fazer um commit “fix typo” e poluir o histórico
- Fazer
git commit --amende quebrar o histórico se já deu push - Ou: usar fixup
# Vê o hash do commit que você quer corrigir
git log --oneline
# Faz a correção e commita marcando como fixup
git add arquivo.js
git commit --fixup=abc1234
# Quando estiver pronto pra mergear, rebase interativo com autosquash
git rebase -i --autosquash main
O --autosquash automaticamente posiciona o fixup logo abaixo do commit original e marca pra ser amassado. Você só precisa salvar e sair.
Quando eu uso: literalmente em toda revisão de código. PRs ficam com histórico limpo, sem aqueles “fix review”, “fix again”, “ok now it works” no log.
Bônus: configurações pra deixar tudo isso melhor
Coloca no teu ~/.gitconfig:
[alias]
lg = log --oneline --graph --all --decorate
[rebase]
autosquash = true
autostash = true
Com essas configs, o primeiro comando vira só git lg, e todo rebase já assume autosquash e dá stash automático nas mudanças não commitadas.
Anota aí. Próxima vez que abrir um terminal, tenta.