stash @ {1} ist mehrdeutig?


122

Ich versuche Informationen über meinen Vorrat zu bekommen, aber Git sagt mir das stash@{0}und stash@{1}ist mehrdeutig. git stash listfunktioniert gut und .git/logs/refs/stashscheint den entsprechenden Inhalt zu haben (nicht, dass ich ein Experte für Git-Interna bin).

% 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

Einfach git stash showfunktioniert einfach gut. Warum werden die Namen, git stash listdie mir geben, als mehrdeutig angesehen?


1
In meinem Fall hatte ich irgendwie einen Zweig namens benannt stash, der den Fehler verursachte.
Zaz

Und in meinem Fall hatte ich eine Fernbedienung namens stash, die den Fehler verursachte!
Robert Muil

Antworten:


231

Deine Muschel frisst deine geschweiften Klammern, also stash@{1}sieht Git , während du sagst , stash@1und das macht keinen Sinn. Zitieren Sie das Argument (verwenden Sie git stash apply "stash@{1}"oder git stash apply stash@"{1}"; das Zitieren in beide Richtungen funktioniert) oder konfigurieren Sie Ihre Shell so, dass geschweifte Klammern nur dann erweitert werden, wenn ein Komma zwischen ihnen steht (zsh kann so oder so konfiguriert werden, bash erweitert nur geschweifte Klammern mit Komma oder Bereich zwischen ihnen, andere Muscheln können sich auf die eine oder andere Weise verhalten.


1
@sehe: Diejenige, die derzeit ungewöhnlich verwendet wird. Die angegebene Fehlermeldung zeigt dies ganz deutlich an (nein, es scheint, dass es keine Bash sein kann).
Jan Hudec

83
Unter Windows frisst PowerShell auch Klammern. Sie können ihnen mit einem Backtick entkommen(git stash drop stash@`{1`})
Xavier Poinas

8
Danke, das passiert mit Fish, war nicht sicher, was passiert ist.
Elijah Lynn

3
@Sergey verwendet für PowerShell entweder stash @ `{0`} (Backticks) oder 'stash @ {0}' (einfache Anführungszeichen).
Hans

4
Oh mein Gott, über ein Jahr später kam ich wieder darauf zurück, weil ich ein Problem hatte. Zeigt nur, wie selten ich das benutze. Dann, um zu sehen, habe ich einen Kommentar darüber hinterlassen, der sicher genug ist, sagt, dass es mit Fisch passiert. Zu lustig.
Elijah Lynn

23

Hallo, mir ist das Gleiche passiert. Der einfachste Weg, dies zu beheben, war:

$ git stash apply stash@"{2}"

Ich benutze eine Windows Git Shell.


2
Alsogit stash apply "stash@{2}"
Rsenna

1
Arbeitet für Powershell
Rsenna

Das gleiche Git-Stash-Apply "stash @ {2}" hat für mich funktioniert. Beim Versuch, mein drittes Stash zu git-Stash zu machen, wurde die Meldung "unbekannte Option: -encodedCommand" angezeigt. Ich habe Visual Studio-Code verwendet, dessen Terminal eine Powershell-Integration aufweist.
Rajan Chauhan

1

Wenn Sie diesen Fehler haben, während Sie in Emacs mit Magit unter Windows arbeiten (wie ich),
hoffe ich, dass diese schnelle Lösung Ihnen hilft:

(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)))
    )
  )

Dies wird {}in einem dritten Parameter zitiert, in ("stash", "cmd", "stash@{0}")dem von ausgeführt wirdmagit-run-git



1

Setzen Sie einfach die Stash-ID zwischen einfache Anführungszeichen:

git stash apply 'stash@{1}'

3
Wie beantwortet dies die Frage? Es gibt keinen Index Nr. 3 in der Stash-Liste. Wenn dies eine ernsthafte Antwort ist, erklären Sie bitte, warum dieser Befehl das Problem lösen wird
Brad

Ich habe meine Antwort aus Gründen der Klarheit bearbeitet: Die Hauptidee bestand darin, die Stash-ID einfach zwischen einfache Anführungszeichen zu setzen. Dies gilt für Unterbefehle "Anwenden" oder "Löschen". Die Stash-ID-Nummer spielt eigentlich keine Rolle
Adriano

Während dieses Code-Snippet die Frage lösen kann, hilft eine Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage in Zukunft für Leser beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
DimaSan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.