Armazenando Alterações (Stashing)
Agora que temos nosso espaço de trabalho configurado, vamos criar algumas alterações e aprender como armazená-las no stash.
Primeiro, vamos fazer algumas alterações em nosso arquivo README.md:
echo "This is a work in progress" >> README.md
Este comando adiciona uma nova linha ao nosso arquivo README.md. Vamos também criar um novo arquivo:
echo "Some important notes" > notes.txt
Agora, se executarmos git status, veremos que temos tanto arquivos modificados quanto arquivos não rastreados (untracked):
git status
Você deve ver uma saída indicando que o README.md foi modificado e o notes.txt não está sendo rastreado.
Imagine que, neste momento, você precise mudar rapidamente para outra tarefa, mas não está pronto para fazer o commit dessas alterações. É aqui que o git stash se torna útil!
Para armazenar suas alterações, execute:
git stash
Você verá uma saída semelhante a esta:
Saved working directory and index state WIP on master: 1234567 Initial commit
Agora, se você executar git status novamente, verá algo interessante:
git status
Você notará que, embora o README.md não apareça mais como modificado, o notes.txt ainda está listado como um arquivo não rastreado. Este é um ponto crucial sobre o git stash:
Importante: Por padrão, o git stash armazena apenas:
- Alterações em arquivos rastreados (arquivos que o Git já conhece)
- Alterações na área de preparação (staged)
Arquivos não rastreados (como o nosso notes.txt) não são incluídos no stash por padrão. Esse comportamento garante que o Git não esconda acidentalmente novos arquivos que você talvez não queira incluir no repositório.
Se você quiser incluir arquivos não rastreados em seu stash, pode usar a opção -u (ou --include-untracked):
git stash -u
Após executar este comando, tanto as alterações no README.md quanto o novo arquivo notes.txt serão armazenados no stash.
Para ver o que está no seu stash, você pode usar:
git stash list
Você deve ver uma ou duas entradas de stash, dependendo se usou a opção -u.
Pressione q para sair da visualização da lista de stashes.
Lembre-se, o stashing é perfeito para mudanças rápidas de contexto. No entanto, ele não substitui os commits em seu fluxo de trabalho de longo prazo. Os stashes destinam-se a ser um armazenamento temporário.