Git stash

E ae meus queridos, nesse post vamos conhecer um recurso muito interessante do git, que é o git stash
.
Vou partir do ponto em que você, meu caro leitor, já está familiarizado com o git, então serão dispensadas as apresentações e bora para o conteúdo principal. 😄👍
📑 Sobre
O git stash
basicamente faz um registro do seu estado atual da branch, deixando armazenado localmente no computador os arquivos alterados e revertendo para o último commit da árvore, o commit HEAD.
🤔 Vamos a um rápido exemplo.
Digamos que você está criando uma feature e já alterou alguns arquivos e você precisa ir para uma outra branch corrigir um erro de produção, porém na atual branch que você está trabalhando a feature possui aqueles arquivos que ainda não estão finalizados para você poder dar um commit, e se apenas for para outra branch irá levar junto esses arquivos modificados, o que também não é uma boa.
Nessas situações é que pode ser utilizado o git stash
, você pode fazer um registro local desses arquivos que estão sendo modificados, ir para outra branch e fazer o que tem que fazer, depois disso é só retornar os arquivos registrados através do git stash
.
Com a explicação dos recursos do git stash
será mais fácil de entender. 😉
📚 Recursos do git stash
O stash possui os seguintes comandos.
- git stash
- git stash save
- git stash list
- git stash apply
- git stash pop
- git stash show
- git stash branch
- git stash clear
- git stash drop
Vamos dar uma olhada em cada um deles.
git stash
Esse é o responsável por registrar os arquivos e retornar ao commit HEAD.
⭐ Exemplo:
git stash
Observação: Para salvar arquivos que ainda não estão rastreados pelo git (untracked), utiliza o -u
para incluir no stash.
git stash save
Semelhante ao git stash
, porém o save vem com algumas opções, como por exemplo dar uma mensagem explicativa para os arquivos que estão sendo salvos.
⭐ Exemplo:
git stash save "Inicialização do processo de cálculo de pedidos"
Observação: Para salvar arquivos que ainda não estão rastreados pelo git (untracked), utiliza o -u
para incluir no stash.
git stash list
O list é responsável por exibir todos os stash que estão salvos. Dessa forma você pode escolher qual stash será retornado.
⭐ Exemplo:
git stash list
Output:
stash@{0}: ...
stash@{1}: ...
stash@{2}: ...
Esses números entre @{} significa o index do registro, esse index é utilizado para reverter um stash específico.
Vale ressaltar que os stash mais recentes ficam no topo.
git stash apply
Utilizando para retornar os arquivos de um stash.
⭐ Exemplo:
git stash apply 1
Esse número utilizado é referente ao index do stash, que foi apresentado no git stash list
.
Caso não for informado um número será utilizado o 0 por default.
git stash pop
Tem a mesma função que o apply, porém com a adiação de que os stash que for revertido será deletado da memória, enquanto o apply mantém.
⭐ Exemplo:
git stash pop 1
Número utilizado é referente ao index do stash, 0 é default.
git stash show
Utilizado para visualizar as diferenças que estão no stash e no commit HEAD.
⭐ Exemplo:
git stash show stash@{1}
Output:
index.ts | 3 +++
app.ts | 5 +++++
2 files changed, 8 insertions(+)
Número utilizado é referente ao index do stash, 0 é default.
git stash branch
Esse comando cria uma branch com o stash escolhido e logo em seguida remove da memória, igual ao pop.
⭐ Exemplo:
git stash branch <name> stash@{1}
Número utilizado é referente ao index do stash, 0 é default.
git stash clear
Basicamente esse comando remove todos os stash em memória.
⭐ Exemplo:
git stash clear
git stash drop
O mesmo propósito do clear, porém com o drop é possível remover somente um stash, através do index.
⭐ Exemplo:
git stash drop stash@{1}
Número utilizado é referente ao index do stash, 0 é default.
Então meu povo, por fim chegamos ao final do post, esse recurso do git acaba sendo muito útil em situações onde precisamos fazer alguma troca inesperada de branch.
Espero que tenham curtido essa feature e esse post. 😊
🔗 Referências
Você pode estudar uma pouco mais do assunto nos links:
- https://git-scm.com/docs/git-stash
- https://www.freecodecamp.org/news/useful-tricks-you-might-not-know-about-git-stash-e8a9490f0a1a/
“Se algo der errado na vida, basta voltar a última versão.” 😁
comments powered by DisqusRoberto Umbelino.