Já ouviu falar de git worktree?
Você está trabalhando em uma feature e, de repente, precisou parar para resolver um problema em produção. Esse é um dos desafios do cotidiano de um programador. Há um longo tempo, eu utilizava o `git stash`, seguido de um `git checkout` ou `git switch` para trocar de branch, e depois um `git stash pop` para restaurar minhas mudanças. Mas existe uma maneira melhor de fazer isso.
🚀 O que é o Git Worktree?
O git worktree
é um recurso do Git, lançado em 2015, que permite criar diretórios separados para diferentes branches do mesmo repositório. Ele é muito útil para trabalhar em várias features ou revisões sem precisar alternar constantemente entre branches.
Atenção: Verifique se você está em uma branch separada, caso contrário, receberá um erro ao tentar fazer checkout da
main
enquanto já estiver nela.
🔧 Cenário de Uso: Trabalhando em uma Feature e Chega um Hotfix
Imagine que você está desenvolvendo uma feature e, de repente, chega uma nova demanda urgente de hotfix. Vamos criar uma nova branch para a feature atual:
git checkout -b feature-02-2025
Agora, suponha que um bug crítico foi identificado e precisa ser corrigido imediatamente. O bug foi registrado como 022025.
📌 Criando um Worktree para o Hotfix
Podemos criar um diretório separado para trabalhar no hotfix sem interromper nossa feature atual:
git worktree add ../hotfix-022025 main
Isso criará um novo diretório chamado hotfix-022025
, que estará vinculado à branch main
.
Nota: O uso de
../
no comando acima faz com que o Git crie a cópia do repositório fora do diretório atual, evitando um problema conhecido como boneca russa, onde um repositório Git é criado dentro de outro e assim sucessivamente.
Agora, saia do diretório atual e liste os arquivos para verificar se o novo diretório foi criado:
cd ..
ls -la
Saída esperada no terminal:
drwxr-xr-x - jsjunior 13 Dec 2024 app
drwxr-xr-x@ - jsjunior 10 Feb 20:28 hotfix-022025
Agora entre no diretório do hotfix:
cd hotfix-022025
Você verá que este diretório é essencialmente um clone do seu repositório principal na branch main
. Agora você pode trabalhar no seu hotfix, fazer commits, abrir um Pull Request e, após a correção, remover o worktree criado.
🧹 Limpando o Worktree Após o Hotfix
Depois de finalizar o hotfix e fazer o merge, você pode remover o worktree para manter o ambiente organizado.
Saia do diretório do worktree:
cd ..
Volte para o seu diretório original (app
, no meu caso):
cd app
Agora, remova o worktree criado:
git worktree remove ../hotfix-022025
Isso limpará o diretório e removerá a referência ao worktree.
🎯 Conclusão
O git worktree
é uma ferramenta extremamente útil para lidar com múltiplas branches sem precisar alternar constantemente entre elas. Isso facilita o fluxo de trabalho, melhora a produtividade e reduz o risco de conflitos e erros.
Espero que essa dica tenha sido útil! 🚀
Por: J.S.Júnior