Como Git stash pop esconderijo específico no 1.8.3?

290

Acabei de atualizar o Git. Estou no Git versão 1.8.3.

Hoje de manhã, tentei descompactar uma alteração no fundo da pilha.

Eu corri git stash pop stash@{1}e recebi esse erro.

fatal: argumento ambíguo 'stash @ 1': revisão desconhecida ou caminho fora da árvore de trabalho. Use '-' para separar os caminhos das revisões, assim: 'git [...] - [...]'

Eu tentei cerca de 20 + variações sobre isso, bem como usando em applyvez de popsem sucesso. O que mudou? Alguém mais encontrou isso?

Jesse Atkinson
fonte
2
Você tentou escapar dos {} 's?
AlexDev #
20
Com o Git 2.11 (quarto trimestre de 2016), agora você pode usar git stash pop 1: veja minha resposta abaixo
VonC

Respostas:

359
git stash apply n

funciona a partir da versão 2.11 do git

Resposta original, possivelmente ajudando a depurar problemas com a sintaxe mais antiga que envolve escape de shell:

Como mencionado anteriormente, as chaves podem exigir escape ou citação, dependendo do sistema operacional, do shell etc.

Consulte " stash @ {1} é ambíguo? " Para obter dicas detalhadas sobre o que pode estar errado e sobre como contorná-lo em vários shells e plataformas.

git stash list
git stash apply stash@{n}

stash git aplicar versão

Bob Gilmore
fonte
15
Meu único problema com esta resposta é que a pergunta pergunta como popum esconderijo específico e esse comando applyé o esconderijo, em vez de exibi-lo. A diferença é que um pop aplica o stash ao código e exclui o stash em si.
Grant Humphries
Não está trabalhando para mim. Obtendo o erro "opção desconhecida: -codedCommand"
Yuvraj Patil
14
Desde a versão 2.11, você pode digitar: git stash apply n
Dwhitz 05/04
Por favor, atualize sua resposta, é agoragit stash apply n
Hafiz Temuri
179

Você precisa escapar do aparelho:

git stash pop stash@\{1\}
Vasiliy
fonte
78

Se você quiser ter certeza de que não precisará lidar com aspas para a sintaxestash@{x} , use o Git 2.11 (quarto trimestre de 2016)

Veja commit a56c8f5 (24 de outubro de 2016) por Aaron M Watson ( watsona4) .
(Mesclado por Junio ​​C Hamano - gitster- no commit 9fa1f90 , 31 de outubro de 2016)

stash: permite que stashes sejam referenciados apenas pelo índice

Em vez de referenciar stash@{n}explicitamente " ", permita simplesmente referenciar como " n".
A maioria dos usuários faz referência a stashes apenas por sua posição na pilha de stash (o que eu chamo de "índice" aqui).

A sintaxe para o stash típico ( stash@{n}) é um pouco chata e fácil de esquecer, e às vezes difícil de escapar corretamente em um script .

Por esse motivo, é desejável a capacidade de fazer coisas com o stash simplesmente referenciando o índice.

Assim:

git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1
VonC
fonte
5
Obrigado! Esta é provavelmente a resposta mais relevante para quem vem aqui em 2019.
Aaron Frary
52

No Windows Powershell, eu executo o seguinte:

git stash apply "stash@{1}"
Robert Brooker
fonte
2
Também funciona no Ubuntu Linux
Bouke Versteegh
também funciona no Mac OS X. Eu gosto mais disso do que escapar de caracteres únicos.
Félix Gagnon-Grenier
16

Como Robert apontou, as aspas podem fazer o truque para você:

git stash pop stash@"{1}"
owenmck
fonte
12

Se nenhuma das opções acima funcionar, as aspas ao redor do stash podem funcionar para você:

git stash pop "stash@{0}"
Kenan
fonte
4

Eu tenho 2,22 instalado e isso funcionou ..

git stash pop --index 1
markg
fonte
Não funciona .. $ git stash pop - index 1 fatal: argumento ambíguo '1': revisão desconhecida ou caminho que não está na árvore de trabalho. Use '-' para separar caminhos das revisões, assim: 'git <comando> [<revisão> ...] - [<arquivo> ...]'
Dave Doga Oz
2

A versão 2.11 ou superior usa o seguinte:

git stash list

git stash apply n

n é o número stash @ {12}

manish kumar
fonte
1

Primeiro verifique a lista: -

git stash list

copie o índice que você deseja exibir da lista stash

git stash pop stash@{index_number}

por exemplo.:

git stash pop stash@{1}
Jabbi Syed
fonte