Muitas vezes trabalho em vários recursos simultaneamente, o que me leva a armazenar alterações e esquecê-las enquanto mudo para outras tarefas. Tentei usar ganchos git e aliases de terminal como lembretes, mas eles eram muito complicados ou fáceis de ignorar. Então, tive que encontrar uma solução melhor.
Este artigo foi postado originalmente em meu blog há mais de um ano, mas sempre volto a ele. Compartilhando novamente com o mundo :)
O Git armazena informações como uma lista de instantâneos. Um instantâneo é uma versão armazenada do repositório em um determinado momento. Cada commit representa um instantâneo no mundo git.
A árvore de trabalho é um checkout único de uma versão do projeto. Esses arquivos são retirados do banco de dados compactado no diretório Git e colocados no disco para você usar ou modificar. Este é o lugar onde você faz seu trabalho antes de encenar e se comprometer.
Git Worktrees são uma maneira de gerenciar várias árvores de trabalho git ao mesmo tempo, sem o incômodo do git stash. Eles nos permitem trabalhar em ramificações como subdiretórios de um repositório, aliviando completamente a dor de armazenar alterações quando uma alteração urgente e não relacionada é necessária.
O módulo worktree permite que você faça checkout de múltiplas versões do projeto em subdiretórios separados no mesmo diretório raiz do repositório. Veja o diagrama a seguir, por exemplo, na abordagem tradicional:
Neste exemplo, tenho duas alterações ocultas (que podem ter centenas de linhas de código) e 3 ramificações, feature-1, feature-2 e fix -1. Quando eu terminar de trabalhar no branch fix-1 e empurrá-lo, meu cérebro terá pulado para a próxima tarefa e esquecido completamente dos recursos anteriores até que eu me lembre deles novamente.
Em vez disso, com árvores de trabalho, fica assim:
Com árvores de trabalho, a estrutura de diretórios contém cada árvore de trabalho (ramificação) em um diretório separado. Isso me permite alternar facilmente de uma ramificação para outra simplesmente alterando o diretório em que estou trabalhando no momento. Meu fluxo de trabalho normal com essa abordagem consiste no seguinte:
Quando eu quero mudar de uma árvore de trabalho para outra, tudo o que preciso fazer é criar uma árvore de trabalho diferente usando as mesmas etapas, se ainda não a tiver criada, ou simplesmente abrir um diretório diferente com VSCode e começar a hackear imediatamente.
Criar uma árvore de trabalho é tão simples quanto executar git worktree add directory-name branch-name para ramificações existentes ou git worktree add directory-name -b branch-name para criar uma nova ramificação.
Depois de terminar de trabalhar em um branch, você pode remover a árvore de trabalho com segurança para parar de poluir sua estrutura de diretórios. Basta executar git worktree remove nome do diretório. Isso não exclui as ramificações subjacentes, então você pode verificá-las novamente com segurança mais tarde.
Worktrees são checkouts de ramificações do repositório, portanto, arquivos não rastreados não são copiados. Arquivos como .env não serão copiados, portanto, copie-os após criar uma árvore de trabalho e instale dependências, se houver.
Observe também que os diretórios criados para as árvores de trabalho aparecerão nos logs de status do git quando executados no diretório do repositório raiz. Essas pegadinhas não são nada para mim comparadas a esquecer horas de trabalho.
Obrigado por ler! Você pode ler mais no meu blog e apoiar meu trabalho nos patrocinadores do GitHub!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3