Executando verificação de segurança...
5

Git Stash - Arquivando alteraçoes de codigo sem dar commit para trabalhar depois

Qual problema resolve?

Quando trabalhamos com programaçao, temos sempre que estar prontos para arrumar correçoes de codigo o mais rapido possivel, muitas vezes subimos a PR de uma demanda, e ja vamos direto pra proxima.

As vezes e necessario parar a demanda atual para corrigir uma PR pendente, mas... oque fazer com as alteraçoes pendentes da demanda atual? voce poderia dar commit e apenas mudar de branch, ou apenas salvar alteraçoes em um bloco de notas e deletar as atualizaçoes. Mas convenhamos que nao sao opçoes atrativas, ninguem quer dar commit em codigo pela metade.

Mas e se desse para salvar as alteraçoes em cache e apenas recupera-las quando necessario?

ISSO E EXATAMENTE OQUE O GIT STASH FAZ! voce pode dar um stash nas alteraçoes, ou seja, esconder as alteraçoes, e ter um ambiente limpo novamente, e depois quando precisar recuperar, com apenas um comando esta tudo de novo na sua maquina... lindo nao?

Quais arquivos o git stash ira reconhecer

  • alteracoes preparadas git add
  • alteraçoes nao preparadas de arquivos existentes

O git nao ira reconhecer

  • aquivos ignorados
  • novos arquivos que ainda nao foram preparados

Criar stash

$ git stash
Saved working directory and index state WIP on master: a30ba6c Fix typo
HEAD is now at a30ba6c Fix Typo

apos o comando, todas as alteraçoes rastreaveis ficam em estado de WIP (work in progress), logo, nenhuma alteraçao estara direto na branch, portanto, com o comando git status verificara que nao existem arquivos modificados

  • flag -u (--include-untracked) = inclui arquivos untracked no stash git stash -u
  • flag -a (--all) = inclui arquivos untracked e ignored no stash git stash -a

Criar stash com arquivos especificos

$ git stash -p

a flag -p permite que voce escolha quais arquivos e modificaçoes quer dar o stash
ira descrever a modificaçao e perguntar se voce quer fazer o stash da alteraçao, e voce obviamente como e inteligente vai responder com (y/n)

Recuperar stash

o stash pode ser aplicado em qualquer branch do projeto

apply

$ git stash apply
On branch foobar

pop

$ git stash pop
On branch main

o git stash pop funciona como o apply, a diferença e que o pop, apos recuperar os dados, apaga o stash, ja o apply persiste e pode ser utilizado novamente

quando temos apenas um stash no cache este comando identifica e ja retorna as modificaçoes para a branch atual...

e quando tem mais de um stash, recupera o mais recente

POREM! quando temos mais de um stash no cache, como saber qual irei recuperar? BOA PERGUNTA JOVEM GAFANHOTO, para isso temos o git stash list!

Listar todos os stashs

$ git stash list
stash@{0}: WIP on master: a30ba6c Fix Typo
stash@{1}: WIP on foobar: d60hg8x Fix Typo

aqui listamos todos nosso stash em cache, e para recuperar um stash especifico git stash apply stash@{0}, no caso oque mudaria de um comando par outro seria o nome do stash, por exemplo stash@{1}

Mostrar o conteudo de um stash

se voce for do tipo que tem perca de memoria, esse comando e pra vc

$ git stash show stash@{0}

ele ira mostrar as principais alteraçoes que o stash guarda, pra vc desorganizado!

  • flag -p = mostra as alteraçoes (com + e -) git stash show -p stash@{0}

Criar stash COM MENSAGEM

agora pra voce que ama organizaçao, tem como salvar uma mensagem no seu stash

$ git stash save "demanda EBL-293"
Saved working directory and index state On foobar: demanda EBL-293

agora quando der stash list, a mensagem tornara mais simples a identificaçao do stash

$ git stash list
stash@{0}: ON on foobar: demanda EBL-293
stash@{1}: WIP on master: a30ba6c Fix Typo

Deletar seu stash

e para nao deixar seu stash list poluido, aqui, como apagar um ou todos stashs
clear

$ git stash clear

o clear ira apagar todos seus stashs TOMA CUIDADO.

para sinalizar qual stash quer apagar, deve fazer assim:
drop

$ git stash drop stash@{0}

FINALIZAÇAO

esta e minha primeira vez fazendo um post na vida, estou testando como funciona o tap news, espero que o post seja util pra alguem e espero que nao tenha sido cansativo, fiquei 3 horas fazendo KKKK

espero nao ter esquecido nada... e aconselho que passem no post que me baseei, nele explica como logicamente funciona o stash, alem de ser bem melhor trabalhado que meu post

Att. Gabriel Aziz :)

Carregando publicação patrocinada...
2

gabrielAziz que publicação sensacional, ainda mais pelo fato de ser sua primeira publicação, meus sinceros parabéns! O git stash já me salvou várias vezes em urgências, onde eu rapidamente preciso atacar outro problema na code base. Inclusive, estou neste momento com um item na minha stash 🤝

E eu não conhecia o git stash apply, muito massa!!!

1
2
2

Muito legal mano, realmente uma mão na roda, uso direto no trampo!

Caso seja interresante apagar algum stash, basta usar:
git stash drop [<stash_id>] - deleta um unick stash.
ou
git stash clear - limpa tudo.