Esconder

Esconder

Como dar um guardado de guardar suas mudanças com o nome associado e encontrá -lo depois

Os desenvolvedores geralmente têm que multitarefa. Você pode estar trabalhando em um novo recurso e pode haver uma solicitação para corrigir um bug. Ou você pode ser o desenvolvedor principal em vários projetos.

Quando você está alternando entre tarefas, às vezes você não quer cometer um trabalho inacabado. Nesses casos, o comando git stash pode ser uma grande ajuda. Ele permite que você empilhe suas mudanças e depois volte ao trabalho inacabado sem adicionar compromissos desnecessários aos seus repositórios Git.

Um fluxo de trabalho para o esconderijo

Vamos inicializar uma filial do Git Master e cometer um arquivo readme.TXT.

$ mkdir my_project
$ cd my_project/
$ git init
$ touch readme.TXT
$ git add -a
$ git Commit -m "Inicialize"

Agora vamos adicionar outro arquivo chamado A.txt para o ramo mestre.

$ toque a.TXT
$ git add -a
$ git commit -m "adicionou um.TXT"

Se você verificar o histórico, você verá:

$ git log --oneeline
D79F7AA adicionou a.TXT
9434D7E Inicialize

Agora vamos criar uma filial do recurso1 e adicionar um B.Arquivo TXT:

Recurso de $ git1
Recurso de checkout de $ git1
$ touch b.TXT
$ git add -a
$ git Commit -m "Adicionado B.TXT"

Abra seu b.Arquivo TXT em um editor e coloque na linha:

Estou prestes a mudar isso para ..

E salve o arquivo. Se você verificar seu status Git, verá o seguinte:

$ git status
No ramo recurso1
Mudanças não encenadas para comprometer:
(use "git add…" para atualizar o que será comprometido)
(Use "checkout git - ..." para descartar mudanças no diretório de trabalho)
modificado: b.TXT
Nenhuma alteração adicionada ao comprometimento (use "git add" e/ou "commit git -a")

Suponha, nesta fase, você recebe uma solicitação para atualizar o a.Arquivo TXT na filial mestre. Mas você não acabou com o B.arquivo txt. Se você tentar conferir a filial mestre, receberá o seguinte erro:

$ git checkout mestre
ERRO: Suas alterações locais nos seguintes arquivos seriam substituídas por checkout:
b.TXT
Por favor, comprometa suas alterações ou esconda -as antes que você possa trocar de ramos.
Abortando

Mas você não quer cometer o trabalho inacabado em B.TXT. Você pode usar o estoque Git nesta situação:

$ git Stash
Diretório de trabalho salvo e WIP de estado de índice no recurso1: 2cfe39b adicionado b.TXT
Head está agora em 2cfe39b adicionado b.TXT

Se você verificar B.txt, deve estar vazio:

$ cat b.TXT
$

Se você verificar o estoque, você verá:

Lista de esconderijo $ git
Stash@0: WIP no recurso1: 2cfe39b adicionado b.TXT

Se você tentar conferir a filial mestre, poderá fazê -lo agora:

$ git checkout mestre
Mudou para a filial 'Mestre'

Suponha que você faça as alterações necessárias no mestre e depois volte para o ramo do recurso1:

Recurso de checkout de $ git1

Seu b.txt ainda está vazio:

$ cat b.TXT
$

Mas se você receber as alterações do esconderijo usando o seguinte comando:

$ git Stash Aplicar
No ramo recurso1
Mudanças não encenadas para comprometer:
(use "git add…" para atualizar o que será comprometido)
(Use "checkout git - ..." para descartar mudanças no diretório de trabalho)
modificado: b.TXT
Nenhuma alteração adicionada ao comprometimento (use "git add" e/ou "commit git -a")

O comando Stash Appl Appl pegou as alterações escondidas e o aplicou a B.arquivo txt
Você pode completar seu trabalho em B.Txt minha modificação da linha

Estou prestes a mudar isso para ..


Para

Estou prestes a mudar isso para fazer

Agora vá em frente e compreenda suas mudanças:

$ git add -a
$ git commit -m "modificado b.TXT"

A aplicação de um estoque não o limpa automaticamente do estoque. Você tem que limpá -lo manualmente:

$ git stash gota
Ref

Por que Git Stoh com nome?

O estoque git é uma pilha. Então você pode continuar empilhando suas mudanças.

Suponha que você adicione "x" a b.txt, esconde -o, adicione um "y" a b.txt, esconde -o e adicione um "z" a b.txt e esconder. Se você verificar o histórico de estoque, verá algo assim:

Lista de esconderijo $ git
Stash@0: WIP no recurso1: 2d6f515 modificado b.TXT
Stash@1: WIP no recurso1: 2d6f515 modificado b.TXT
Stash@2: WIP no recurso1: 2d6f515 modificado b.TXT

Você não tem como saber qual estoque tem qual mudança. Quando você estiver guardando, você pode usar a opção Salvar para colocar comentários. Você pode usar os comentários para anexar um nome ao seu esconderijo e torná -los reconhecíveis:

$ git Stash Save "X"
Diretório de trabalho salvo e estado de índice no recurso1: x
Head está agora em 2d6f515 modificado b.TXT

Para adicionar modificação "X", "Y" e "Z", você pode obter o seguinte em seu estoque usando a opção Salvar para cada estoque:

Lista de esconderijo $ git
Stash@0: no recurso1: Z
Stash@1: no recurso1: y
Stash@2: no recurso1: x

Agora você tem um nome para cada alteração que você escondeu. Infelizmente, você não pode usar o nome para recuperar o estoque. Você terá que usar o número de estoque. Suponha que você queira fazer sua mudança "y". Você vê que Stash@1 é y. Então você pode aplicar essa alteração na sua filial atual:

$ git Stash Aplicar Stash@1

E seu b.TXT deve ter as alterações de Stash@1.

Você pode usar o mesmo método para soltar um estoque. Suponha que você perceba que não precisa mais do X Stash. Você pode apenas usar o seguinte comando para excluir esse esconderijo:

$ git Stash Drop Stash@2

E o estoque deve ter ido embora:

Lista de esconderijo $ git
Stash@0: no recurso1: Z
Stash@1: no recurso1: y

Lembre -se de que, se você usar as opções Aplicar e soltar sem parâmetros, ele usará a parte superior da pilha (Stash@0).

Conclusão

O comando git stash é uma maneira poderosa de gerenciar seu espaço de trabalho. Dominar este comando ajudará você a trabalhar com mais eficiência.

Um estudo mais aprofundado:
  • https: // git-scm.com/book/en/v1/git-tools-sking
Referências:

Flack Overflow: como-nome e retender-se-shirt-by-name-in-git