Git : Usando o stash para salvar trabalhos em andamento

O git é uma ferramenta para controle de versão muito versátil.  Uma das funcionalidades que acho interessante e útil no dia-a-dia é o stash.

Imagine a seguinte situação, você está trabalhando em um branch em conjunto com outra pessoa e após ter feito algumas alterações você precisa revisar o que esta pessoa fez.

Seu trabalho ainda não está completo para merecer um commit e se você tentar fazer o pull irá ter problemas ou fazer o merge das suas mudanças com as dele.

O que fazer nesse caso?  Uma solução seria copiar seus arquivos para outro local e baixar os dele e depois restaurar os seus.

O git oferece a possibilidade de você armazenar, localmente, as versões in progress de seus arquivos para situações como estas.

Para tanto você deve usar o comando abaixo:

git stash save "mensagem"

Ao fazer isso você irá salvar os arquivos modificados e ainda não comitados para esta área reservada e associar a esta uma mensagem para lhe ajudar a saber o que estava fazendo.

Após este comando ele ira resetar todos os arquivos para a última versão comitada. Você pode fazer o pull ou demais operações e quando quiser retomar o que estava fazendo basta usar o comando

git stash apply stash@{0}

O stash funciona como uma pilha na qual é possível armazenar várias “versões” dos arquivos sendo editados. O comando anterior irá retornar a posição mais antiga (0) da pilha.

Se você quiser ver o que existe no stash use

git stash list

Para obter qualquer outro elemento você simplesmente identifica qual posição deseja obter no apply stash@{x}.

Para limpar a pilha (removendo todas as posições) use

git stash clear
Share
This entry was posted in Desenvolvimento, Git and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>