10

Pare de usar Git Stash pra trocar de branch. Existe algo muito melhor.

Você está no meio de uma feature, surge um PR pra revisar ou um hotfix urgente. O que você faz? git stash, troca de branch, faz o que precisa, volta, git stash pop... torce pra não ter conflito, lembra qual stash era o certo, e reza pro estado voltar como estava.

Ou pior: faz aquele commit "wip asdasd", troca de branch, depois volta e dá reset --soft. Todo mundo já fez isso.

O problema é que nenhuma dessas abordagens foi feita pra isso. Stash é pra guardar mudanças temporárias, não pra ficar alternando entre trabalhos. E commits WIP poluem o histórico.

Git Worktree

Existe uma funcionalidade nativa do Git, disponível desde 2015, que resolve exatamente esse problema: Git Worktree.

git worktree add ../meu-projeto-wt/hotfix hotfix/urgente

Fizemos um vídeo explorando git worktrees: https://youtu.be/KigDh1IW2QQ

Esse comando cria uma pasta separada com o checkout daquela branch. Pronto. Você tem duas branches abertas ao mesmo tempo, cada uma na sua pasta, sem stash, sem commit fake, sem clonar o repo de novo.

Quando terminar, remove:

git worktree remove ../meu-projeto-wt/hotfix

Como tudo compartilha a mesma referência Git, git fetch atualiza tudo, e merge/cherry-pick entre branches locais funciona normalmente.

Cuidado: arquivos do .gitignore (node_modules, .env) não são copiados pra nova worktree. Precisa rodar install e copiar configs. Pra automatizar isso, vale dar uma olhada no Worktrunks, um wrapper que adiciona hooks de setup automático, hash de portas pra rodar múltiplas instâncias, e cleanup completo.

Com agentes de IA precisando rodar em paralelo no mesmo repo, worktrees ficaram ainda mais relevantes. Mas mesmo sem IA, se você usa stash pra trocar de branch, worktree é uma alternativa muito mais limpa.


✨ Comunidade Craft Code Club no Discord:
https://discord.gg/cqF9THUfnN

Carregando publicação patrocinada...
4

Meu cents para você!

Gostei da maneira que você apresentou essa feature... Eu utilizo o worktree do GIT para dar deploy em alguns APPs no servidor, mas realmente nunca tinha passado pela minha cabeça em utilizar ele para HOTFIX.

2
3

Excelente. Realmente e uma feature pouco divulgada/conhecida.

No meu caso, uso o stash do git ou o shelf do Intellij.
Projetinho monolito com mais de 2GB (600MB só de código fonte e mais um tanto de dependências e arquivos de build) e bastante configuração, ficar criando cópia não fica muito viável.

Ainda assim, vejo que é viável para boa parte dos casos, porque os projetos não costumam ser tão grandes assim (exceto pastas de virtualenv ou node_modules).