Git tem comandos que vao alem do commit e push. Tres deles salvam tempo em situacoes especificas: stash, bisect e worktree.
Stash guarda modificacoes nao commitadas para voce poder mudar de branch sem perder o trabalho:
echo "nova feature" > arquivo.txt
git stash push -m "WIP: comeco da feature"
git stash list
git stash pop
Para guardar apenas arquivos especificos:
git stash push -m "so mudancas no frontend" src/frontend/
Para ver o que tem dentro de um stash sem aplicar:
git stash show -p stash@{0}
Bisect faz busca binaria no historico para encontrar o commit que introduziu um bug:
git bisect start
git bisect bad # versao atual esta quebrada
git bisect good v1.0 # versao v1.0 estava funcionando
O Git vai fazendo checkout nos commits do meio do caminho. Voce testa e marca:
git bisect good # esse commit funciona
git bisect bad # esse commit esta quebrado
Quando encontrar o commit culpado, o Git mostra a mensagem. Para sair:
git bisect reset
Da para automatizar com um script:
git bisect start HEAD v1.0
git bisect run python test_bug.py
O Git executa test_bug.py em cada commit. Se o script retorna 0, marca como good. Se retorna 1, marca como bad.
Worktree permite ter multiplos branches checked out ao mesmo tempo em pastas separadas:
git worktree add ../projeto-hotfix hotfix/urgente
Isso cria uma pasta projeto-hotfix ao lado do seu projeto com o branch hotfix/urgente ja checked out. Voce trabalha nos dois ao mesmo tempo sem precisar esconder nada com stash.
Para listar worktrees ativas:
git worktree list
Para remover uma worktree:
git worktree remove ../projeto-hotfix
git branch -d hotfix/urgente
Worktree e ideal para revisao de PR. Voce faz checkout do branch do PR em outra pasta, revisa, testa, e volta para seu branch sem perder contexto.
Stash resolve trocas rapidas de contexto. Bisect encontra bugs em minutos que levariam horas manualmente. Worktree elimina o atrito de alternar entre branches. Os tres juntos cobrem situacoes que o commit simples nao resolve.
That's all for now.
Thanks for reading!
Top comments (0)