<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Git Worktree on Dev TLDRLSS</title>
        <link>https://dev.tldrlss.com/pt/tags/git-worktree/</link>
        <description>Recent content in Git Worktree on Dev TLDRLSS</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>pt</language>
        <lastBuildDate>Sat, 08 Aug 2026 08:29:00 +0800</lastBuildDate><atom:link href="https://dev.tldrlss.com/pt/tags/git-worktree/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Por que fazer git stash a cada troca de branch? O que é Git Worktree? Diferenças entre Git Worktree e Git Branch? Como usar o Git Worktree para criar um fluxo de desenvolvimento multi-thread de alta eficiência</title>
        <link>https://dev.tldrlss.com/pt/article/2026/08/git-worktrees-branch-guide-multi-thread-workflow/</link>
        <pubDate>Sat, 08 Aug 2026 08:29:00 +0800</pubDate>
        
        <guid>https://dev.tldrlss.com/pt/article/2026/08/git-worktrees-branch-guide-multi-thread-workflow/</guid>
        <description>&lt;img src="https://dev.tldrlss.com/global-assets/images/app/git-1.jpg" alt="Featured image of post Por que fazer git stash a cada troca de branch? O que é Git Worktree? Diferenças entre Git Worktree e Git Branch? Como usar o Git Worktree para criar um fluxo de desenvolvimento multi-thread de alta eficiência" /&gt;&lt;p&gt;Você já passou por esta situação? Está no meio do desenvolvimento de uma funcionalidade complexa quando, de repente, surge um Bug urgente que precisa ser corrigido imediatamente.&lt;/p&gt;
&lt;p&gt;Para alternar de branch, você é forçado a executar relutantemente &lt;code&gt;git stash&lt;/code&gt; para esconder o seu código inacabado. Após corrigir o Bug e voltar, precisa fazer &lt;code&gt;git stash pop&lt;/code&gt; com todo o cuidado, enfrentando às vezes o pesadelo dos conflitos de código (conflict).&lt;/p&gt;
&lt;p&gt;Na verdade, o &lt;code&gt;Git&lt;/code&gt; há muito tempo possui uma ferramenta extremamente poderosa para resolver este problema: o &lt;code&gt;Git Worktree&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Diga adeus à troca caótica de branches e ao Stash, e abrace o desenvolvimento multi-thread com Worktree&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Este artigo vai te guiar pelo funcionamento essencial e pelo uso prático no mundo real.&lt;/p&gt;
&lt;h2 id=&#34;qual-é-a-diferença-entre-git-worktree-e-git-branch&#34;&gt;Qual é a diferença entre Git Worktree e Git Branch?
&lt;/h2&gt;&lt;p&gt;Para entender o &lt;code&gt;Git Worktree&lt;/code&gt;, primeiro vamos esclarecer como ele se diferencia do &lt;code&gt;Git Branch&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Podemos comparar o controle de versão com a leitura de um livro físico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Commit&lt;/code&gt; é a &lt;strong&gt;edição / versão do livro&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Branch&lt;/code&gt; é um &lt;strong&gt;marcador de página posicionado em uma página específica&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Worktree&lt;/code&gt; é a &lt;strong&gt;mesa de trabalho onde você abre o livro&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No método tradicional, temos apenas uma mesa de trabalho. Sempre que queremos mudar de marcador de página, precisamos recolher todos os papéis em alteração sobre a mesa ou guardá-los na gaveta (ou seja, &lt;code&gt;git stash&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Já o &lt;code&gt;Git Worktree&lt;/code&gt; permite que você tenha várias &lt;strong&gt;mesas de trabalho independentes&lt;/strong&gt; ao mesmo tempo.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Item de comparação&lt;/th&gt;
          &lt;th&gt;Git Branch&lt;/th&gt;
          &lt;th&gt;Git Worktree&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Conceito de Workspace&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Compartilha um único diretório físico de trabalho&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Possui múltiplos diretórios físicos de trabalho independentes&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Custo de troca de branch&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Exige commit, stash ou salvar alterações&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Sem stash; basta alternar de diretório&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Isolamento e segurança&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Arquivos não commitados podem gerar conflitos ou resíduos&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Diretórios totalmente isolados; alterações não se interferem&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Histórico de alterações&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Compartilha histórico de Commit e branches do Git&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Compartilha histórico de Commit e branches do Git&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A branch ativa, o Staging Area e as alterações não commitadas de cada Worktree são totalmente independentes, mas elas &lt;strong&gt;compartilham todo o histórico de Commit e registros de branch&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Branch é o marcador de versão, enquanto Worktree é a mesa de trabalho física&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dessa forma, quando você precisar alternar de tarefa, basta abrir outra pasta de diretório sem alterar em nada o seu estado de desenvolvimento atual.&lt;/p&gt;
&lt;!--adsense--&gt;
&lt;h2 id=&#34;como-começar-a-usar-o-git-worktree&#34;&gt;Como começar a usar o Git Worktree?
&lt;/h2&gt;&lt;p&gt;Ao adotar o &lt;code&gt;Git Worktree&lt;/code&gt; em projetos reais, um bom planejamento de diretórios torna o desenvolvimento muito mais fluido.&lt;/p&gt;
&lt;p&gt;Recomenda-se manter o diretório do projeto original clonado com &lt;code&gt;git clone&lt;/code&gt; como a sede limpa &lt;code&gt;main&lt;/code&gt;, e colocar os novos diretórios Worktree fora do projeto principal (por exemplo, &lt;code&gt;../my-app-worktrees&lt;/code&gt;), evitando erros de escaneamento recursivo pelas ferramentas de desenvolvimento.&lt;/p&gt;
&lt;p&gt;O fluxo de comandos mais comum é o seguinte:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Fluxo&lt;/th&gt;
          &lt;th&gt;Comando&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1. Criar um novo Worktree e simultaneamente uma nova branch&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;git worktree add ../my-app-worktrees/feature-login -b feature-login&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2. Visualizar a lista de todos os Worktrees ativos&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;git worktree list&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;O &lt;code&gt;Git Worktree&lt;/code&gt; é especialmente adequado para gerenciar tarefas de desenvolvimento de um &lt;code&gt;AI Agent&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Você pode atribuir um diretório Worktree independente ao &lt;code&gt;AI Agent&lt;/code&gt; para que ele faça alterações e testes à vontade, enquanto os desenvolvedores humanos realizam a revisão de código (Review) e testes em outro Worktree.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dê ao AI Agent um Worktree isolado para processar em paralelo o desenvolvimento por IA e a revisão humana&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ambos operam em seus respectivos diretórios físicos, de forma segura e clara.&lt;/p&gt;
&lt;h2 id=&#34;como-fazer-o-merge-e-a-limpeza-segura-após-concluir-o-desenvolvimento&#34;&gt;Como fazer o merge e a limpeza segura após concluir o desenvolvimento?
&lt;/h2&gt;&lt;p&gt;Após concluir o desenvolvimento em um Worktree independente, como integrar os resultados e fazer a limpeza?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lembre-se de um conceito importante: O diretório Worktree em si não precisa de merge, &lt;strong&gt;o que realmente precisa ser mesclado é a Branch&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Você só precisa retornar ao diretório da mesa de trabalho &lt;code&gt;main&lt;/code&gt; e executar o comando &lt;code&gt;git merge&lt;/code&gt; na branch da funcionalidade correspondente para concluir a integração.&lt;/p&gt;
&lt;p&gt;Para a limpeza, siga o procedimento padrão de dois passos:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Passo&lt;/th&gt;
          &lt;th&gt;Comando&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1. Remover o diretório físico do Worktree&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;git worktree remove ../my-app-worktrees/feature-login&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2. Excluir a branch de funcionalidade concluída&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;git branch -d feature-login&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Remova primeiro o diretório Worktree e depois exclua a Branch&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Certifique-se de usar sempre o comando &lt;code&gt;git worktree remove&lt;/code&gt; para realizar a limpeza, em vez de apagar a pasta manualmente no gerenciador de arquivos.&lt;/p&gt;
&lt;!--adsense--&gt;
&lt;h2 id=&#34;quais-são-as-armadilhas-comuns-ao-usar-o-git-worktree&#34;&gt;Quais são as armadilhas comuns ao usar o Git Worktree?
&lt;/h2&gt;&lt;p&gt;Embora o &lt;code&gt;Git Worktree&lt;/code&gt; seja extremamente conveniente, existem algumas armadilhas que exigem atenção especial.&lt;/p&gt;
&lt;h3 id=&#34;armadilha-1-alterações-não-commitadas-serão-perdidas&#34;&gt;Armadilha 1: Alterações não commitadas serão perdidas
&lt;/h3&gt;&lt;p&gt;Embora a remoção do Worktree não exclua a Branch em si, se você ainda tiver alterações sem commit nesse diretório, a remoção forçada do diretório Worktree fará com que essas modificações sejam perdidas para sempre.&lt;/p&gt;
&lt;h3 id=&#34;armadilha-2-conflito-de-ocupação-de-branch&#34;&gt;Armadilha 2: Conflito de ocupação de branch
&lt;/h3&gt;&lt;p&gt;O mecanismo de proteção do &lt;code&gt;Git&lt;/code&gt; &lt;strong&gt;não permite fazer Checkout da mesma Branch em dois Worktrees diferentes simultaneamente&lt;/strong&gt;. Se você tentar alternar para uma branch já em uso em um segundo Worktree, o &lt;code&gt;Git&lt;/code&gt; bloqueará a ação e exibirá uma mensagem de erro.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Forçar a exclusão de um Worktree causará a perda de alterações sem Commit&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ao dominar essas características e princípios, você evitará esses problemas.&lt;/p&gt;
&lt;h2 id=&#34;conclusão&#34;&gt;Conclusão
&lt;/h2&gt;&lt;p&gt;Com o &lt;code&gt;Git Worktree&lt;/code&gt;, podemos dizer adeus à troca caótica de branches e ao processo &lt;code&gt;git stash&lt;/code&gt;, alcançando um verdadeiro desenvolvimento multi-thread.&lt;/p&gt;
&lt;p&gt;Na próxima vez que precisar corrigir um Bug urgente, desenvolver várias funcionalidades simultaneamente ou atribuir tarefas de programação a um &lt;code&gt;AI Agent&lt;/code&gt;, experimente abrir uma nova mesa de trabalho!&lt;/p&gt;
&lt;!--adsense--&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://git-scm.com/docs/git-worktree&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Git - git-worktree Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
