19. Stashing: Salvando Mudanças Temporariamente
O desenvolvimento de software é um processo dinâmico e, muitas vezes, os desenvolvedores precisam gerenciar diferentes tarefas ao mesmo tempo. Durante esse processo, pode surgir a necessidade de alternar entre branches sem querer comprometer o trabalho atual que ainda não está pronto para ser commitado. Aqui é onde o conceito de Stashing no Git se torna extremamente útil.
O que é Stashing?
O git stash
é um comando poderoso que permite aos desenvolvedores salvar suas mudanças locais temporariamente em uma área que o Git chama de "stash". Essas mudanças podem ser tanto modificações em arquivos rastreados quanto novos arquivos que ainda não foram adicionados ao índice (staged). O stash é uma pilha, o que significa que você pode ter múltiplos stashes e gerenciá-los como uma lista.
Quando usar o Stashing?
O stashing é particularmente útil quando:
- Você está no meio de um trabalho e surge a necessidade de mudar de contexto rapidamente, como corrigir um bug crítico em outra branch.
- Você quer experimentar algo em seu código sem criar um commit para essas mudanças.
- Você precisa limpar seu diretório de trabalho para puxar mudanças de upstream sem fazer commit das suas próprias mudanças.
Como fazer Stash das Mudanças
Para criar um novo stash, você pode simplesmente executar:
git stash
Isso irá salvar suas mudanças e limpar o diretório de trabalho. Se você quiser incluir mudanças em arquivos que ainda não foram rastreados pelo Git (untracked files), você pode usar:
git stash -u
Ou, para incluir também arquivos ignorados:
git stash -a
Se você quiser dar um nome específico ao seu stash para lembrar do contexto das mudanças, você pode usar:
git stash save "mensagem explicativa"
Listando e Inspecionando Stashes
Para ver todos os stashes que você criou, utilize:
git stash list
Cada entrada na lista terá um identificador único na forma de stash@{
onde
é um número que indica a posição do stash na pilha.
Para ver o que está dentro de um stash específico sem aplicá-lo, você pode usar:
git stash show -p stash@{}
Aplicando um Stash
Quando você estiver pronto para continuar trabalhando nas mudanças que salvou, você pode aplicar o stash mais recente com:
git stash apply
Ou um específico com:
git stash apply stash@{}
Isso reaplica as mudanças salvas em seu diretório de trabalho, mas mantém o stash na pilha. Se você quiser aplicar e remover o stash da pilha, você pode usar:
git stash pop
Lidando com Conflitos
Quando você aplica um stash, podem ocorrer conflitos se o seu diretório de trabalho atual tiver mudanças que se sobrepõem às mudanças do stash. Neste caso, o Git irá alertá-lo sobre os conflitos e você terá que resolvê-los manualmente, assim como faria com um merge.
Removendo um Stash
Se você quiser descartar um stash que você sabe que não precisará mais, você pode remover um específico com:
git stash drop stash@{}
Ou, para limpar todos os stashes:
git stash clear
Branches e Stashes
Às vezes, pode ser útil aplicar um stash em uma nova branch. Isso pode ser feito com:
git stash branch stash@{}
Isso cria uma nova branch a partir do commit onde o stash foi criado, aplica o stash e, se bem-sucedido, remove o stash da pilha.
Boas Práticas com Stashing
- Use mensagens descritivas ao salvar stashes para facilitar a identificação deles no futuro.
- Evite acumular muitos stashes. Aplique-os ou descarte-os regularmente para manter sua pilha de stashes gerenciável.
- Antes de aplicar um stash, certifique-se de que está na branch correta e que seu diretório de trabalho está limpo.
Conclusão
O stashing é uma característica incrivelmente útil do Git que permite aos desenvolvedores gerenciar mudanças temporárias de forma eficiente. Ele oferece flexibilidade para lidar com interrupções no fluxo de trabalho e ajuda a manter o diretório de trabalho limpo. Compreender e utilizar o stashing pode aumentar significativamente sua produtividade e facilitar o gerenciamento de tarefas paralelas no desenvolvimento de software.