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.TXTSe você verificar o histórico, você verá:
$ git log --oneelineAgora vamos criar uma filial do recurso1 e adicionar um B.Arquivo TXT:
Recurso de $ git1Abra 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 StashSe você verificar B.txt, deve estar vazio:
$ cat b.TXTSe 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.TXTMas 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
Para
Agora vá em frente e compreenda suas mudanças:
$ git add -aA 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 $ gitVocê 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).
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.
Flack Overflow: como-nome e retender-se-shirt-by-name-in-git