web-dev-qa-db-fra.com

Comment git stash pop stash spécifique en 1.8.3?

Je viens de mettre à jour Git. Je suis sur la version 1.8.3 de Git.

Ce matin, j'ai essayé de dégager un changement 1 au plus profond de la pile.

J'ai couru git stash pop stash@{1} et j'ai eu cette erreur.

fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

J'ai essayé plus de 20 variantes à ce sujet, ainsi que apply au lieu de pop sans succès. Qu'est-ce qui a changé? Quelqu'un d'autre a rencontré ça?

178
Jesse Atkinson

Comme indiqué précédemment, les accolades peuvent nécessiter un échappement ou une citation en fonction de votre système d'exploitation, de votre shell, etc.

Voir " stash @ {1} est ambigu? " Pour des conseils détaillés sur ce qui pourrait ne pas se passer, et sur la manière de le contourner dans divers environnements et plateformes.

git stash list
git stash apply stash@{n}

git stash applique la version

194
Bob Gilmore

Vous devez échapper aux accolades:

git stash pop stash@\{1\}
137
Vasiliy

Sur Windows Powershell, je lance ceci:

git stash apply "stash@{1}"
45
Robert Brooker

Si vous voulez être sûr que pas ne doit pas traiter de guillemets pour la syntaxe stash@{x}, utilisez Git 2.11 (Q4 2016)

Voir commit a56c8f5 (24 oct. 2016) de Aaron M Watson (watsona4) .
(Fusion par Junio ​​C Hamano - gitster - in commit 9fa1f90 , 31 octobre 2016)

stash: autorise les références à être référencées par index uniquement

Au lieu de référencer explicitement "stash@{n}", permettez à simplement référencé comme "n".
La plupart des utilisateurs référencent uniquement les stash en fonction de leur position dans la pile de stash (ce que j'appelle "l'index" ici).

La syntaxe pour le stash typique (stash@{n}) est légèrement ennuyeuse et facile à oublier, et parfois difficile de s'échapper correctement dans un script .

Pour cette raison, la capacité de faire des choses avec le stash par référencer simplement l'index est souhaitable.

Alors:

git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1
42
VonC

Comme l'a souligné Robert, les guillemets pourraient vous aider:

git stash pop stash@"{1}"
16
owenmck

Si rien de ce qui précède ne fonctionne, des guillemets autour de la réserve peuvent vous convenir

git stash pop "stash@{0}"
11
ksooklall

Vérifiez d'abord la liste: -

git stash list

copiez l'index que vous voulez extraire de la liste

git stash pop stash@{index_number}

par exemple.:

git stash pop stash@{1}
0
Jabbi Syed