O que é um esconderijo?
(Fonte de confusão: usando um combustÃvel bonito com o fóssil, clicou no botão "Stash changes", ver os ficheiros com pontos de interrogação, e não sabe o que fazer com eles ...)
2 answers
First of all lets understand why do need to use stash?
A fim de entender que stash precisamos primeiro de entender o {[[2]}. O Git tem um modelo build in chamado 3-states
que é a estrutura interna do git para trabalhar com o repositório local.
O "problema" com o 3-states
é que existe um repositório por e não um ramo por . Portanto, quando trocamos ramos, a única coisa que está a ser modificada é a HEAD
O que aponta para um diferente cometer.
No git ramo é apenas um alias para um determinado comprometer de modo de comutação ramos, como explicado antes apenas alterar o HEAD
deixando o working directory && stage
inalterado e deixando a modificação como é.
[O diretório de trabalho está sendo atualizado com os arquivos necessários que o novo branch tem, mas não faz parte de nossa explicação.]
So how can we work on multiple branches?
A maioria dos utilizadores de GIT utiliza stash
para obter a capacidade de trabalhar simultaneamente em vários ramos. git stash
é a maneira básica de realizá-lo desde git stash
salvar o nosso trabalho numa zona separada chamada stash.
Até agora tudo bem.
Where is the problem and why not to use stash in first place?
O problema é que ao usar stash não temos a capacidade de realmente trabalhar em vários ramos, uma vez que teremos que esconder cada vez que queremos mudar de branches.
Mais um problema que podemos enviar o código do esconderijo para o ramo errado e que temos de descobrir quais são os ficheiros correctos se fizéssemos um erro.So how can we really work on multiple branches?
O Git tem esta capacidade desde 2007. Sob a pasta cotrib
o era um comando escondido chamado 'new-workdir', que mais tarde foi adicionado à inversão gin 2.5
e foi renomeado para git worktree
.
git worktree
git worktree
irá criar uma nova pasta de trabalho permite-nos trabalhar em vários ramos ao mesmo tempo. cada cópia irá apontar para o repositório de origem, enquanto o 3-states
é uma cópia nova e fresca. Isso nos poupa a necessidade de usar git stash
ou mesmo para clonar um novo repositório desde que esses worktree compartilha o mesmo repo que podemos checar qualquer branch em qualquer worktree, podemos fazer um cherry-pick ou merge e tudo será feito localmente em nossa máquina.
Utilização:
git worktree add <second path>
Irá criar outra pasta no seu computador que lhe permitirá trabalhar em diferentes ramificações simultaneamente.
Isto permitir-lhe-á fazer quaisquer experiências no novo worktree sem ter qualquer efeito no próprio repositório. Na imagem anexada você pode ver que há 2 pasta de trabalho separada, mas ambos estão a usar um único Acordo de recompra e a partilhar o conteúdo.
Por outras palavras, é uma forma de salvar o seu trabalho actual enquanto faz outra coisa, sem fazer um "real" persistir ou afectar o histórico do seu repositório.O Stashing toma o Estado sujo do seu directório de trabalho - ou seja, os seus ficheiros modificados e as alterações encenadas - e guarda-o numa pilha de alterações inacabadas que poderá reaplicar a qualquer momento.