¿stash @ {1} es ambiguo?


122

Estoy tratando de obtener información sobre mi alijo, pero git me lo dice stash@{0}y stash@{1}es ambiguo. git stash listfunciona bien y .git/logs/refs/stashparece tener el contenido apropiado (no es que sea un experto en aspectos internos de git).

% git stash list
stash@{0}: On master: two
stash@{1}: On master: one
% git stash show stash@{1}
fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

Simplemente git stash showfunciona bien. Entonces, ¿por qué los nombres que git stash listme da se consideran ambiguos?


1
En mi caso, de alguna manera terminé con una rama nombrada stash, que estaba causando el error.
— Zaz

¡Y en mi caso tenía un control remoto nombrado stash, causando el error!
— Robert Muil

Respuestas:


231

Tu caparazón se está comiendo tus llaves, así que mientras dices stash@{1}, git ve stash@1y eso no tiene sentido. Cite el argumento (use git stash apply "stash@{1}"o git stash apply stash@"{1}"; citar de cualquier manera funcionará) o reconfigure su shell para expandir solo los corchetes cuando hay una coma entre ellos (zsh se puede configurar de cualquier manera, bash solo expande los corchetes con coma o rango entre ellos, otro las conchas pueden comportarse de una manera u otra).


1
@sehe: El que Uncommon usa actualmente. El mensaje de error citado lo indica con bastante claridad (no, parece que no puede ser bash).
— Jan Hudec

83
En Windows, PowerShell también comerá corchetes. Puedes escapar de ellos con una tilde(git stash drop stash@`{1`})
— Xavier Poinas

8
Gracias esto sucede con Fish, no estaba seguro de lo que estaba pasando.
— Elijah Lynn

3
@Sergey usa stash @ `{0`} (comillas inversas) o 'stash @ {0}' (comillas simples) para PowerShell.
— Hans

4
Oh Dios, más de un año después y volví a esto porque estaba teniendo un problema. Solo muestra cuán raramente uso esto. Luego, para ver, dejé un comentario arriba que, efectivamente, dice que sucede con Fish. Demasiado gracioso.
— Elijah Lynn

23

Hola, me pasó lo mismo. La forma más fácil de solucionarlo fue:

$ git stash apply stash@"{2}"

Estoy usando un shell git de Windows.


2
Tambiéngit stash apply "stash@{2}"
— rsenna

1
Funciona para powershell
— rsenna

El mismo git stash apply "stash @ {2}" funcionó para mí, recibía el mensaje "opción desconocida: -encodedCommand" cuando intentaba guardar mi tercer alijo, estaba usando el código de Visual Studio que tiene integración de PowerShell como terminal.
— Rajan Chauhan

1

Si tiene este error mientras trabaja en Emacs con Magit en Windows (como yo)
, espero que esta rápida solución le ayude:

(if (eq system-type 'windows-nt)
    (defadvice magit-run-git (before magit-run-git-win-curly-braces (&rest args) activate)
      "Escape {} on Windows"
      (setcar (nthcdr 2 args) 
              (replace-regexp-in-string "{\\([0-9]+\\)}" "\\\\{\\1\\\\}" (elt args 2)))
    )
  )

Esto se cotizará {}en un tercer parámetro en el ("stash", "cmd", "stash@{0}")que se ejecuta pormagit-run-git



1

Simplemente coloque la identificación del alijo entre comillas simples:

git stash apply 'stash@{1}'

3
¿Cómo responde esto a la pregunta? No hay un índice # 3 en la lista de alijo. Si esta es una respuesta seria, explique por qué este comando resolverá el problema
— Brad

Edité mi respuesta para mayor claridad: la idea principal era simplemente poner la identificación del alijo entre comillas simples. Se aplica a los subcomandos 'aplicar' o 'eliminar'. El número de identificación de alijo en realidad no importa
— Adriano

Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo a la pregunta para los lectores en el futuro, y es posible que esas personas no conozcan los motivos de su sugerencia de código.
— DimaSan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.