O que é `git stash`?
git stash põe de lado temporariamente suas alterações não commitadas para que você possa trocar de contexto com um working directory limpo e restaurá-las depois.
git stash é a forma rápida de colocar seu trabalho atual na prateleira. Quando surge algo urgente e você ainda não está pronto para commitar, o stash guarda suas alterações não commitadas, deixa tudo limpo e permite retomar o trabalho quando você voltar.
O que o stash faz
O stash registra suas modificações não commitadas, tanto as staged quanto as unstaged, e reverte seu working directory para o último commit. As alterações são salvas em uma pilha de stashes que você pode reaplicar depois. É um botão de pausa leve, não um commit, e permanece inteiramente na sua máquina.
Guardar e restaurar
Você faz o stash, executa o trabalho urgente e depois faz pop do stash para trazer suas alterações de volta.
git stash push -m "WIP form layout"
# handle the interruption
git stash popQuando o stash ajuda
O stash é útil quando você precisa trocar de branch para corrigir algo urgente, trazer atualizações para uma árvore limpa ou remover temporariamente alterações para testar um build limpo. Você pode manter vários stashes e aplicá-los seletivamente, embora pilhas profundas de stash fiquem confusas.
Stash e CI/CD
Stashes são puramente locais e nunca são enviados por push, então o CI nunca os vê. Isso é intencional: um pipeline constrói o histórico commitado, não o trabalho em andamento que alguém guardou na prateleira. Se você quer que o CI teste algo, precisa commitar e fazer push; alterações no stash simplesmente não existem no remote.
Usando o stash com sabedoria
- Use o stash para trocar de contexto sem commitar trabalho pela metade.
- Adicione uma mensagem para lembrar o que cada stash contém.
- Evite deixar os stashes se acumularem e ficarem obsoletos.
- Lembre-se de que stashes são locais; commite para levar as alterações ao CI.
Principais conclusões
git stashguarda alterações não commitadas para deixar um working directory limpo.- Você as restaura depois com
popouapplya partir da pilha de stashes. - Stashes são apenas locais; o CI constrói o histórico commitado, não os stashes.