O que é um esconderijo?

Pesquisei e procurei em vários lugares por um tempo, mas não encontrei uma boa resposta. O que é um stash, e para que é usado?

(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 ...)

Author: SQB, 2012-06-29

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.

enter image description here

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.]

Então, se adicionarmos novos ficheiros, modificamos alguns outros e agora queremos mudar-nos para um ramo diferente, teremos Sujeira deixada de fora na nossa área de trabalho dir &palco como se vê abaixo. Temos algum trabalho sujo a seguir-nos, independentemente do ramo em que estamos a trabalhar.

enter image description here

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.

Então podemos fazer o check-out. o código em qualquer momento dado a um determinado ramo. enter image description here

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.

enter image description here

 4
Author: CodeWizard, 2018-09-12 12:45:20
Fósseis, Git e possivelmente outros sistemas de controle de revisão compartilham a ideia de um estoque. O Pro Git tem uma secção sobre a arrumação . Diz, em parte:

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.

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.
 8
Author: Todd A. Jacobs, 2017-02-26 17:26:51