Introdução
Neste laboratório, você aprenderá como verificar se um stash do Git foi aplicado com sucesso ao seu diretório de trabalho. Exploraremos a interação entre o comando git stash e o status do repositório, demonstrando como verificar as alterações aplicadas e distingui-las dos stashes não aplicados.
Através de passos práticos, você usará git status para observar o estado do seu diretório de trabalho antes e depois de fazer o stash e aplicar as alterações. Você também utilizará git stash list para gerenciar e inspecionar suas entradas de stash, garantindo que você possa determinar com confiança o status de aplicação do seu trabalho em stash.
Verificar o git status para Alterações Aplicadas
Nesta etapa, exploraremos como o comando stash do Git interage com o diretório de trabalho e como verificar o status do seu repositório após aplicar um stash.
Primeiro, vamos garantir que estamos no diretório do nosso projeto. Abra seu terminal e navegue até o diretório my-time-machine:
cd ~/project/my-time-machine
Agora, vamos criar um novo arquivo e adicionar algum conteúdo para simular a existência de alterações não commitadas:
echo "This is a new feature." > feature.txt
echo "Adding some more content." >> message.txt
Agora criamos um novo arquivo feature.txt e modificamos o message.txt existente. Vamos ver como o Git visualiza essas alterações usando git status:
git status
Você deve ver uma saída indicando que feature.txt não está rastreado e message.txt foi modificado:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
no changes added to commit (use "git add" and/or "git commit -a")
Agora, vamos fazer o stash dessas alterações. Fazer o stash é como colocar seu trabalho atual de lado temporariamente para que você possa mudar para outra coisa sem commitar alterações incompletas.
git stash save "Work in progress"
Você deve ver uma saída confirmando que o stash foi salvo:
Saved working tree and index state On master: Work in progress
Seu diretório de trabalho agora deve estar limpo, como se você não tivesse feito essas alterações. Você pode verificar isso com git status:
git status
A saída deve mostrar um diretório de trabalho limpo:
On branch master
nothing to commit, working tree clean
Agora, vamos aplicar o stash que acabamos de criar. Aplicar um stash traz as alterações em stash de volta para o seu diretório de trabalho.
git stash apply
Você deve ver uma saída indicando que as alterações foram aplicadas:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9)
Finalmente, vamos verificar o git status novamente para ver o estado do nosso diretório de trabalho após aplicar o stash.
git status
A saída deve mostrar que as alterações do stash estão agora de volta no seu diretório de trabalho, aparecendo como arquivos modificados e não rastreados, assim como antes de fazermos o stash. Isso confirma que git stash apply traz as alterações de volta sem automaticamente prepará-las (staging) ou commitá-las.
Executar git stash list para Verificação
Nesta etapa, aprenderemos como visualizar a lista de stashes que salvamos usando o comando git stash list. Este comando é útil para acompanhar seu trabalho temporário.
Certifique-se de ainda estar no diretório ~/project/my-time-machine.
Na etapa anterior, criamos um stash. Vamos vê-lo na lista de stashes. Digite o seguinte comando:
git stash list
Você deve ver uma saída semelhante a esta:
stash@{0}: On master: Work in progress
Esta saída nos mostra que temos um stash salvo. stash@{0} é o identificador para este stash específico. O número nas chaves indica sua posição na lista de stash (0 é o mais recente). "On master" nos diz em qual branch estávamos quando criamos o stash, e "Work in progress" é a mensagem que fornecemos quando salvamos o stash.
Se você tivesse vários stashes, eles seriam listados aqui, com stash@{0} sendo o mais recente, stash@{1} o próximo mais recente, e assim por diante.
O comando git stash list é essencial para gerenciar seus stashes. Ele permite que você veja quais stashes você tem disponíveis e ajuda a identificar aquele que você deseja aplicar ou descartar.
Compreender como listar seus stashes é o primeiro passo para usar efetivamente o recurso de stash para gerenciar seu trabalho em andamento.
Testar Stashes Não Aplicados
Nesta etapa, confirmaremos que aplicar um stash não o remove da lista de stashes. Esta é uma distinção importante entre git stash apply e git stash pop.
Certifique-se de ainda estar no diretório ~/project/my-time-machine.
Nas etapas anteriores, criamos um stash e, em seguida, o aplicamos. Vamos verificar a lista de stash novamente para ver se o stash ainda está lá.
git stash list
Você deve ver a mesma saída de antes:
stash@{0}: On master: Work in progress
Como você pode ver, mesmo após aplicar o stash, ele permanece na lista de stashes. Isso significa que você pode aplicar o mesmo stash várias vezes, se necessário, embora este não seja um fluxo de trabalho comum.
Se você quisesse aplicar o stash e também removê-lo da lista, você usaria o comando git stash pop em vez de git stash apply. pop é como aplicar as alterações e, em seguida, descartar imediatamente o stash.
Vamos demonstrar git stash pop. Primeiro, certifique-se de que seu diretório de trabalho esteja limpo. Como aplicamos o stash, temos alterações não commitadas. Podemos commitá-las ou descartá-las para esta demonstração. Vamos descartá-las para retornar a um estado limpo.
git restore .
Este comando descarta todas as alterações no diretório de trabalho. Agora, verifique o status:
git status
A saída deve mostrar um diretório de trabalho limpo:
On branch master
nothing to commit, working tree clean
Agora, vamos usar git stash pop para aplicar o stash e removê-lo da lista.
git stash pop
Você deve ver uma saída indicando que o stash foi aplicado e, em seguida, descartado:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9)
Finalmente, vamos verificar a lista de stash novamente:
git stash list
Desta vez, você não deve ver nenhuma saída, indicando que a lista de stash está vazia:
Isso confirma que git stash pop remove o stash após aplicá-lo, enquanto git stash apply o deixa na lista. Compreender a diferença entre apply e pop é crucial para gerenciar seus stashes de forma eficaz.
Resumo
Neste laboratório, aprendemos como verificar se um Git stash foi aplicado com sucesso ao diretório de trabalho. Começamos criando e armazenando alterações em um projeto, em seguida, usamos git status para observar o estado do diretório de trabalho antes e depois de fazer o stash e aplicar. Um diretório de trabalho limpo após aplicar um stash indica que as alterações foram trazidas de volta com sucesso.
Também exploramos o uso de git stash list para visualizar a lista de stashes disponíveis e confirmar que um stash é removido da lista depois de ter sido aplicado usando git stash apply ou git stash pop. Isso fornece uma maneira clara de verificar se um stash específico não está mais pendente de aplicação.



