Como excluir uma stash do git

Neste artigo você vai aprender a como excluir uma stash do git, de forma simples e com apenas um comando.

Resposta rápida: pra excluir uma stash do git tu usa o git stash drop

Sem passar nada, ele remove a entrada mais recente (stash@{0})

Pra apagar uma específica: git stash drop stash@{2}, onde o número é o índice que aparece no git stash list

Pra apagar todas de uma vez: git stash clear, lembrando que essas entradas ficam sujeitas a poda e podem ficar impossíveis de recuperar

E o git stash pop também conta: ele aplica a stash e remove ela da lista no mesmo movimento

excluir uma stash do git capa

Fala programador(a), beleza? Bora aprender mais sobre git, especificamente a como excluir um stash

Muitas das vezes criamos uma stash para salvar algo, e depois trazer esse código de volta caso haja validade ainda

Mas ele pode ficar obsoleto, e acabar criando confusão no projeto, por isso precisamos organizar o nosso repositório

O comando para remover a stash é:

git stash drop

Porém tome cuidado, este comando remove a última stash

Se você quer remover um stash específica, utilize:

git stash drop stash@{n}

Onde n é o índice da stash que você deseja remover

Para remover todas as stashs, você pode utilizar:

git stash clear

Agora basta você escolher o comando que melhor se encaixa para a sua situação, e excluir a stash! 🙂

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

Quer aprender mais sobre git? Veja este curso gratuito:

Conclusão

Neste artigo você aprendeu a como excluir uma stash do git

Temos diversos comandos a nossa disposição, que servem para:

  • remover apenas a stash superior;
  • remover uma stash específica;
  • remover todas as stashs;

Escolha o que encaixa no seu projeto, e aplique!

Deseja programar de forma profissional? Confira o nosso treinamento completo clicando aqui.

Uma plataforma de cursos com projetos completos, comunidade de alunos e muito mais!

Há também o nosso canal no YouTube, com muito conteúdo gratuito de qualidade!

Nova seção curta: "Antes de apagar, veja o que tem na stash:"

Calma, antes de sair dropando, dá uma olhada no que tu vai perder

O comando pra listar é:

git stash list

Por padrão cada entrada aparece como "WIP on <branchname>", tipo assim:

stash@{0}: WIP on master: 049d078 Create index file

O stash@{0} é a mais recente, o stash@{1} é a anterior, e por aí vai

Quer ver o conteúdo antes de apagar? Usa:

git stash show -p stash@{1}

Ele mostra o diffstat por padrão, e aceita qualquer formato conhecido do git diff (o -p mostra em forma de patch)

Olhou, conferiu, aí sim tu apaga com tranquilidade 🙂

Adicionar aviso curto: "Tome cuidado com a renumeração:"

Quando tu apaga uma stash do meio da pilha, as outras são renumeradas

Ou seja, apagou o índice 1, o que era 2 vira 1

Então se tu for apagar várias, roda o git stash list de novo entre um drop e outro, senão apaga a errada

Já me ferrei uma vez por causa disso…

Nova subseção: "Deu erro ‘zsh: no matches found’?"

Se tu usa zsh ou fish, as chaves do stash@{n} são interpretadas pelo próprio shell, e o comando quebra

A solução é escapar ou botar entre aspas:

git stash drop ‘stash@{1}’

ou

git stash drop stash@\{1\}

No bash normal tu não precisa disso, mas quem tá no zsh já sabe do que eu tô falando haha

Nova seção: "Apaguei sem querer, dá pra recuperar?"

Dá, mas depende de o Git ainda não ter passado o rodo

Quando tu roda o drop, o próprio Git imprime a referência apagada junto do hash do commit da stash, tipo assim:

Dropped refs/stash@{0} (2ca03e22256be97f9e40f08e6d6773c7d41dbfd1)

Com esse hash ainda na tela, é só reaplicar:

git stash apply <hash>

Fechou o terminal e perdeu o hash? Aí tu vai caçar entre os commits pendurados (dangling):

git fsck –no-reflog | awk ‘/dangling commit/ {print $3}’

Inspeciona cada candidato com git show <hash> até achar o teu código

E se quiser recolocar ele na referência de stash na mão:

git update-ref refs/stash <sha1>

Só não vacila achando que isso dura pra sempre, beleza? A janela depende da coleta de lixo do Git: entradas de reflog inalcançáveis expiram em 30 dias por padrão (gc.reflogExpireUnreachable) e objetos soltos sem referência são podados depois de 2 semanas por padrão (gc.pruneExpire)

E lembra do aviso da própria documentação sobre o clear: as entradas ficam sujeitas a poda e podem ficar impossíveis de recuperar

Acrescentar um item na lista e uma frase curta:

aplicar e remover a stash no mesmo movimento com o git stash pop

O pop remove a entrada da lista e aplica ela por cima do teu working tree, ou seja, ele também é uma forma de excluir a stash, só que aproveitando o código antes

Nota curta de frescor:

Todos os comandos aqui são os da documentação oficial do git stash, conferidos na versão estável mais recente do Git, a 2.55.0, de junho de 2026

Não há material próprio sobre git stash disponível (o vídeo fornecido é sobre uma skill de pesquisa do GitHub, assunto sem relação), então NENHUM bloco de experiência foi escrito e nenhuma frase do tipo "testamos" entra no post

Pra ganhar primeira mão de verdade neste post, precisaria ser gravado/testado depois: (1) print real do terminal mostrando o git stash list com duas ou três entradas e a saída Dropped refs/stash@{0} (hash) logo após o drop; (2) a recuperação completa em repositório de teste, do git fsck –no-reflog até o git stash apply <hash>, com o resultado na tela; (3) a reprodução do erro do zsh com as chaves e a mesma linha funcionando com aspas; (4) o teste da renumeração: apagar o índice 1 e mostrar o list antes e depois. Com esses quatro prints o post vira o único da SERP com prova visual, não só comando copiado da doc

Perguntas frequentes

Qual o comando pra excluir uma stash do git?

git stash drop

Ele remove uma única entrada da lista de stash, e quando tu não informa nenhuma referência, ele remove a mais recente (stash@{0})

Como excluir uma stash específica?

Primeiro roda o git stash list pra ver os índices (stash@{0} é a mais recente, stash@{1} a anterior)

Depois passa a referência no drop:

git stash drop stash@{1}

A sintaxe de reflog também aceita coisas como stash@{2.hours.ago}

Como apagar todas as stashes de uma vez?

git stash clear

Ele remove todas as entradas de stash

Só que se liga no aviso da documentação: essas entradas ficam sujeitas a poda (pruning) e podem ficar impossíveis de recuperar, então roda só quando tu tem certeza

Dá pra recuperar uma stash apagada por engano?

Na maioria das vezes dá

Ao apagar, o Git imprime a referência junto do hash do commit da stash, no formato Dropped refs/stash@{0} (2ca03e2…)

Com esse hash em mãos, tu reaplica com git stash apply <hash>

Sem o hash, procura entre os commits pendurados: git fsck –no-reflog | awk ‘/dangling commit/ {print $3}’ e inspeciona cada um com git show <hash>

Pra recolocar na referência de stash: git update-ref refs/stash <sha1>

A janela depende da coleta de lixo: entradas de reflog inalcançáveis expiram em 30 dias por padrão e objetos soltos sem referência são podados depois de 2 semanas por padrão

Por que os índices das outras stashes mudam depois do drop?

Porque ao remover uma entrada o Git renumera as demais

Apagou o índice 1, o que era 2 vira 1

Por isso, se tu for apagar várias, lista de novo com git stash list entre um drop e outro

Como ver o conteúdo da stash antes de excluir?

git stash show mostra o conteúdo de uma entrada, com diffstat por padrão

Ele aceita qualquer formato conhecido do git diff, então pra ver em forma de patch:

git stash show -p stash@{1}

Deu ‘zsh: no matches found’ ao rodar o drop, e agora?

Em shells como zsh e fish as chaves do stash@{n} são interpretadas pelo próprio shell

Escapa ou põe entre aspas:

git stash drop ‘stash@{1}’

ou

git stash drop stash@\{1\}

O git stash pop também exclui a stash?

Exclui sim

O pop remove a entrada da lista de stash e aplica ela por cima do teu working tree atual

Ou seja, é excluir aproveitando o código antes, diferente do drop, que só tira da lista

Leia também

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares