Git - Operação Stash

Suponha que você esteja implementando um novo recurso para seu produto. Seu código está em andamento e, de repente, ocorre uma escalação do cliente. Por causa disso, você deve deixar de lado o trabalho com novos recursos por algumas horas. Você não pode confirmar seu código parcial e também não pode descartar suas alterações. Portanto, você precisa de algum espaço temporário, onde você pode armazenar suas alterações parciais e depois confirmá-lo.

No Git, a operação stash pega seus arquivos controlados modificados, organiza as mudanças e os salva em uma pilha de mudanças não concluídas que você pode reaplicar a qualquer momento.

[[email protected] project]$ git status -s
M string.c
?? string

Agora, você deseja trocar de filial para escalonamento de cliente, mas não deseja comprometer o que está trabalhando ainda; então você esconderá as mudanças. Para colocar um novo estoque em sua pilha, execute ogit stash comando.

[[email protected] project]$ git stash
Saved working directory and index state WIP on master: e86f062 Added my_strcpy function
HEAD is now at e86f062 Added my_strcpy function

Agora, seu diretório de trabalho está limpo e todas as alterações são salvas em uma pilha. Vamos verificar isso com ogit status comando.

[[email protected] project]$ git status -s
?? string

Agora você pode trocar de filial com segurança e trabalhar em outro lugar. Podemos ver uma lista de alterações escondidas usando ogit stash list comando.

[[email protected] project]$ git stash list
[email protected]{0}: WIP on master: e86f062 Added my_strcpy function

Suponha que você tenha resolvido o escalonamento do cliente e esteja de volta ao seu novo recurso procurando seu código incompleto, basta executar o git stash pop comando, para remover as alterações da pilha e colocá-los no diretório de trabalho atual.

[[email protected] project]$ git status -s
?? string

[[email protected] project]$ git stash pop

O comando acima produzirá o seguinte resultado:

# On branch master
# Changed but not updated:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
#
modified: string.c
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
#
string
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/[email protected]{0} (36f79dfedae4ac20e2e8558830154bd6315e72d4)

[[email protected] project]$ git status -s
M string.c
?? string