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.
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
porem ao verificar novamente com o git status temos o arquivo com status de Untracked
sem ter sido salva no stash
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
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.
após usar o comando git stash pop voltamos o arquivo untraked e se fizermos isso mais uma vez vamos ter o resultado inicial
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.