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.

Agora responda o exercício sobre o conteúdo:

Qual dos seguintes comandos do Git é usado para salvar mudanças locais temporariamente em uma área chamada "stash"?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Trabalhando com tags

Próxima página do Ebook Gratuito:

20Trabalhando com tags

4 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto