Git stash duas vezes


93

Tive que trocar rapidamente os branches do git, então executei git stash, mas tive que executá-lo novamente porque um dos meus arquivos precisava ser editado.

Então, corri git stashduas vezes e estou pronto para voltar a editar meus arquivos. Eu corri, git stash applymas não estou convencido de que todos os arquivos que eu havia escondido foram removidos. Há algo que eu possa fazer? Alguma maneira de verificar?

Quando eu corro git stash show, vejo apenas o último dos meus dois esconderijos git.

Existe uma maneira de mostrar tudo git stashes?


4
git stash list. Se você fez dois stashes, faça call git stash popduas vezes.
Felix Kling

Oi, você consertou! Você deve colocar isso como uma resposta. Muito obrigado
stephenmurdoch

Respostas:


169

Você pode obter uma lista de todos os stashes com

git stash list

que vai te mostrar algo como

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Se você fez dois stashes, basta pagar git stash popduas vezes. Ao contrário de git stash apply, popaplica e remove o estoque mais recente.

Você também pode fazer referência a um estoque específico, por exemplo

git stash show stash@{1}

ou

git stash apply stash@{1}

Muito obrigado. Salvou meu dia.
stephenmurdoch

25
Se você quiser git stash popduas vezes porque deseja os dois stashes no mesmo commit, mas você encontra "erro: suas alterações locais nos seguintes arquivos seriam substituídas por mesclagem:" no segundo git stash pop, então você pode: 1) git stash pop, 2) git add .e 3 ) git stash pop.
gabe

Isso me ajudou. Eu precisava fazer "git stash" e depois "git stash --all" para esconder alguns novos arquivos não rastreados. Fazer git stash pop duas vezes não estava funcionando. Eu só recebi de volta o estoque posterior.
Leopold Kristjansson

0

Eu me deparei com esta situação, fiz dois stashes e git stash pop apenas unstashed último stash. Então eu fiz

git stash list

git stash pop stash@{1}

Este unstashed meu primeiro stash e pude ver todas as minhas mudanças de volta!


0

Você fez algumas perguntas diferentes na postagem, e outros entrevistados deram boas respostas a algumas delas. O que parece mais importante, mas não foi respondido é este:

>> Não estou convencido de que todos os arquivos que armazenei não foram armazenados. Há algo que eu possa fazer? Alguma maneira de verificar?

Compare o estoque com a árvore local

Acho que o que você quer fazer é comparar o estoque com a árvore de trabalho local . Você pode colocar a opção -p no comando stash e você está bem:

git stash show -p

Se você está atrás de um em particular, apenas use o nome git stash ou id da lista stash:

git stash show -p stash@{3}

Talvez use o diff?

Se você está realmente interessado em aprimorar suas habilidades git, você sempre pode ir para um diff. Para ver a diferença entre o que está no estoque e o que é verificado no HEAD no branch master, o seguinte diff pode ser usado:

git diff stash@ master

Outro comando interessante para mostrar a você as mudanças de elementos no histórico do stash que podem ser úteis é --stat:

git stash list --stat

Mas acho que a resposta simples é a resposta certa. Basta usar a opção -p e você provavelmente verá se o estoque que você arquivou foi retirado.

 git stash show -p stash@{3}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.