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