# Isolamento de espaço de trabalho (/pt/docs/verdent-manager/advanced-features/workspace-isolation)

> Git isolamento baseado em worktree para experimentação paralela sem conflitos



Workspace Isolation é o sistema do Verdent para garantir que o trabalho paralelo nunca interfira consigo mesmo. Cada espaço de trabalho é um ambiente de trabalho completamente separado, isolado no nível do sistema de arquivos usando git worktrees.

***

## O que você vai aprender [#o-que-você-vai-aprender]

* Como o isolamento de espaço de trabalho evita conflitos
* Como os git worktrees viabilizam o isolamento
* Diferença entre Base Workspace e Workspaces
* Criar, alternar e gerenciar espaços de trabalho
* Melhores práticas para gerenciamento de espaços de trabalho

***

## O que é Workspace Isolation? [#o-que-é-workspace-isolation]

Workspace Isolation garante que as alterações de uma tarefa nunca afetem outra. Experimente diferentes abordagens em paralelo, compare resultados e faça rebase seletivo apenas das alterações que você deseja de volta na branch principal.

### Como funciona [#como-funciona]

| Camada        | Como funciona                                                        |
| ------------- | -------------------------------------------------------------------- |
| **Diretório** | Cada espaço de trabalho é um diretório isolado                       |
| **Branch**    | Cada espaço de trabalho tem seu próprio checkout de branch           |
| **Arquivos**  | Alterações de arquivos em um espaço de trabalho não afetam os outros |
| **Staging**   | Cada espaço de trabalho tem sua própria staging area                 |

### Benefícios [#benefícios]

<CardGroup cols="2">
  <Card title="Zero interferência" icon="shield-halved">
    Agentes paralelos não podem entrar em conflito, fisicamente impossível
  </Card>

  <Card title="Experimentação segura" icon="flask">
    Experimente alterações arriscadas sem afetar o código estável
  </Card>

  <Card title="Comparação clara" icon="code-compare">
    Use git diff para comparar abordagens entre espaços de trabalho
  </Card>

  <Card title="Rebase seletivo" icon="code-merge">
    Faça rebase apenas dos resultados em que você confia
  </Card>
</CardGroup>

***

## Base Workspace vs Workspaces [#base-workspace-vs-workspaces]

### Base Workspace [#base-workspace]

O Base workspace é o checkout original do seu repositório, servindo como ponto de partida padrão.

| Característica          | Descrição                                        |
| ----------------------- | ------------------------------------------------ |
| **Localização**         | A localização original do seu git clone ou init  |
| **Branch primária**     | Normalmente na branch main ou de desenvolvimento |
| **Ponto de referência** | Fonte para comparar trabalho experimental        |

**Quando usar o Base:**

* Alterações rápidas que não precisam de isolamento
* Ponto de referência para comparar trabalho experimental
* Quando você quer que as alterações vão diretamente para a branch principal
* Tarefas simples em que a execução paralela não é necessária

### Workspace [#workspace]

Um Workspace é um ambiente de trabalho isolado criado usando git worktrees, com seu próprio checkout de branch independente e estado de arquivos.

**Quando usar um Workspace:**

* Desenvolvimento de funcionalidades em paralelo
* Experimentação com alterações arriscadas
* Trabalhar em várias tarefas simultaneamente
* Quando você quer isolamento antes de fazer rebase

***

## Criar e gerenciar espaços de trabalho [#criar-e-gerenciar-espaços-de-trabalho]

### Criar um novo espaço de trabalho [#criar-um-novo-espaço-de-trabalho]

| Plataforma  | Atalho         |
| ----------- | -------------- |
| **macOS**   | `Cmd+Shift+N`  |
| **Windows** | `Ctrl+Shift+N` |

**O que acontece:**

1. O Verdent cria um diretório isolado de git worktree
2. Uma nova branch é criada (ou uma branch existente é feita checkout)
3. O espaço de trabalho fica totalmente isolado dos outros espaços de trabalho
4. O espaço de trabalho aparece em **All Workspaces** na barra superior

### Alternar entre espaços de trabalho [#alternar-entre-espaços-de-trabalho]

| Ação                              | macOS                                          | Windows                                        |
| --------------------------------- | ---------------------------------------------- | ---------------------------------------------- |
| **Próximo espaço de trabalho**    | `Ctrl+Tab`                                     | `Ctrl+Tab`                                     |
| **Espaço de trabalho anterior**   | `Ctrl+Shift+Tab`                               | `Ctrl+Shift+Tab`                               |
| **Selecionar espaço de trabalho** | Clique em **All Workspaces** na barra superior | Clique em **All Workspaces** na barra superior |

**Preservação de estado:**

* O Verdent mantém todos os estados de espaço de trabalho ativos
* Alterne instantaneamente sem atraso de configuração
* Contexto completo preservado ao alternar

***

## Fazer rebase das alterações do espaço de trabalho [#fazer-rebase-das-alterações-do-espaço-de-trabalho]

Quando você estiver pronto para integrar as alterações do espaço de trabalho de volta à branch principal:

### Usando a interface do Verdent [#usando-a-interface-do-verdent]

<Steps>
  <Step title="Concluir o trabalho">
    Conclua o trabalho no espaço de trabalho
  </Step>

  <Step title="Revisar alterações">
    Clique em **Task Changes** no painel central para revisar todas as modificações
  </Step>

  <Step title="Fazer rebase para a branch principal">
    Clique em **Workspace Actions → Rebase to main branch** na Workspace Bar
  </Step>

  <Step title="Resolver conflitos">
    Resolva quaisquer conflitos, se solicitado
  </Step>

  <Step title="Verificar">
    Revise as alterações antes de confirmar
  </Step>
</Steps>

### Manter os espaços de trabalho atualizados [#manter-os-espaços-de-trabalho-atualizados]

Use **Workspace Actions → Sync with main branch** para trazer as últimas alterações da branch principal para o seu espaço de trabalho. Isso ajuda a evitar grandes conflitos ao fazer rebase.

***

## Melhores práticas [#melhores-práticas]

### Convenções de nomenclatura [#convenções-de-nomenclatura]

| Prática                    | Exemplo                                            |
| -------------------------- | -------------------------------------------------- |
| Nomes descritivos          | `feature-auth`, `bugfix-123`, `experiment-caching` |
| Incluir números de tickets | `JIRA-456-user-login`                              |
| Manter nomes curtos        | Evite nomes excessivamente longos                  |

### Manutenção de espaços de trabalho [#manutenção-de-espaços-de-trabalho]

| Prática                                              | Por quê                                           |
| ---------------------------------------------------- | ------------------------------------------------- |
| **Excluir espaços de trabalho já rebaseados**        | Liberar espaço em disco                           |
| **Remover experimentos abandonados**                 | Manter a lista de espaços de trabalho gerenciável |
| **Manter um número razoável de espaços de trabalho** | Os recursos do sistema são finitos                |

### Higiene do Git [#higiene-do-git]

| Prática                                | Por quê                                                                |
| -------------------------------------- | ---------------------------------------------------------------------- |
| **Faça commits com frequência**        | Faça commit do trabalho em andamento antes de alternar                 |
| **Commits pequenos**                   | Commits menores são mais fáceis de fazer cherry-pick                   |
| **Sincronize com a base regularmente** | Não deixe os espaços de trabalho divergirem demais da branch principal |
| **Reduza a complexidade de conflitos** | A integração regular evita grandes conflitos                           |

***

## Perguntas frequentes [#perguntas-frequentes]

<AccordionGroup>
  <Accordion title="Quanto espaço em disco cada espaço de trabalho usa?">
    Cada espaço de trabalho duplica os arquivos de trabalho, mas compartilha o diretório `.git`. O uso de espaço equivale aproximadamente ao tamanho do seu projeto por espaço de trabalho. Projetos grandes com muitos espaços de trabalho paralelos usarão um espaço em disco significativo.
  </Accordion>

  <Accordion title="Posso excluir um espaço de trabalho?">
    Sim. Exclua o espaço de trabalho pelo Verdent. Isso remove o diretório, mas preserva qualquer trabalho com commit na branch.
  </Accordion>

  <Accordion title="O que acontece com as alterações sem commit se eu excluir um espaço de trabalho?">
    As alterações sem commit são perdidas quando um espaço de trabalho é excluído. Sempre faça commit ou stash das alterações antes de remover um espaço de trabalho.
  </Accordion>

  <Accordion title="Posso converter um espaço de trabalho no base workspace?">
    Não há conversão direta, mas você pode fazer rebase de todas as alterações do espaço de trabalho para a branch principal e depois excluir o espaço de trabalho. O histórico da branch é preservado.
  </Accordion>

  <Accordion title="Os worktrees funcionam com todos os serviços de hospedagem git?">
    Sim. Os worktrees do Git são um recurso padrão do git. Eles funcionam com GitHub, GitLab, Bitbucket e qualquer outro serviço de hospedagem git.
  </Accordion>
</AccordionGroup>
