Andson Lourenco |

Postado há cerca de 1 mês

Salvando modificações com o git sem fazer commit

Você esta no meio do seu dia de trabalho e recebe uma task que precisa ser feita aquele momento mas ainda não concluiu o que estava fazendo, esta com alguns arquivos criados e outros modificados mas nao quer fazer o commit ainda, se estiver em um caso parecido pode usar o git stash para seguir para a proxima demanda sem precisar fazer commit do que estava fazendo.

Mas afinal o que e o git stash?

O git stash permite salvar temporariamente as alterações não commitadas em uma stash para que você possa trabalhar em outra coisa sem perder seu progresso. Ele armazena o estado atual do diretório de trabalho e do índice, restaurando-os posteriormente quando necessário.

Seu uso

digamos que temos os seguintes arquivos como status de Untracked e modified para o git.

imagem com o retorno do console do vscode com o retorno do gitstatus

e queremos salvar esses arquivos modificados sem criar uma branch e fazer commit. Para isso vamos usar o comando git stash podemos só digitar o comando dessa forma ou usar o git stash push o efeito e o mesmo.

git stash push

Depois de execultar esse comando temos a seguinte saida

imagem com o retorno do console do vscode com o retorno do gitstatus

porem ao verificar novamente com o git status temos o arquivo com status de Untracked sem ter sido salva no stash

imagem com o retorno do console do vscode com o retorno do gitstatus

O que aconteceu aqui e que o comando git stash push ele salva apenas os arquivos que ja estao com status de Tracked para o git como o file2.js esta com status de Untracked ele não foi salvo. Para resolver isso basta usar o mesmo comando só que dessa vez passando uma opção

git stash push -u

a opção -u ou --include-untracked ira adicionar os arquivos que estao com o status de untracked

com isso temos os arquivos modificados salvos em um local que posteriormente podemos voltar e continuar de onde paramos.

Para ver seus stashs basta usar o comando

git stash list

com isso podemos visualiza nossas stash

imagem com o retorno do console do vscode com o retorno do gitstatus

Aqui temos 2 stash com base na branch master a primeira sem o arquivo com status de untraked e a segunda com esse arquivo.

Digamos que tenah terminado o que precisava fazer e vai voltar a atuar nessas modificaçoes, para isso basta usar o comando

git stash pop 

Esse comando faz o inverso do git stash push. Só que aqui temos que ter um pouco de cuidado pois pode provocar alguns conflitos.

Note que temos 2 stashs a stash@{0} e a stash@{1} a stash {0} esta com os arquivos com status de traked e a stash {1} esta com o arquivo com status de untraked. o comando pop vamos aplicar as modificaçoes da stash mais nova.

imagem com o retorno do console do vscode com o retorno do gitstatus

após usar o comando git stash pop voltamos o arquivo untraked e se fizermos isso mais uma vez vamos ter o resultado inicial

imagem com o retorno do console do vscode com o retorno do gitstatus

Esse foi só um exemplo de uso, aconselho que olhe a documentaçao do git stash para mais opçoes tais como git stash apply que e parecido com o git stash pop porem o pop remove a stash enquanto o apply mantem a stash.