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,
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
mainenquanto 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-2025Agora, 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 mainIsso 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 -laSaí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-022025Você 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 appAgora, remova o worktree criado:
git worktree remove ../hotfix-022025Isso 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