stash @ {1}があいまいですか?


122

私は私の隠し場所についての情報を取得しようとしていますが、gitがそれを教えてくれてstash@{0}おりstash@{1}、あいまいです。git stash list正常に動作し.git/logs/refs/stash、適切なコンテンツがあるようです(私が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

単なるプレーンでgit stash show十分です。それで、なぜgit stash list私を与える名前が曖昧であると考えられるのですか?


1
私の場合、なんとかしてブランチという名前stashになってしまい、エラーが発生していました。
Zaz 2014

そして私の場合、という名前のリモートstashがあり、エラーが発生しました!
Robert Muil 2016年

回答:


231

あなたのシェルは中括弧を食べているので、と言っている間stash@{1}、gitはstash@1それを理解していて意味がありません。引数を引用するか(git stash apply "stash@{1}"またはgit stash apply stash@"{1}";どちらか一方を使用すると機能します)、シェルを再構成して、それらの間にコンマがある場合に中かっこのみを展開します(zshはどちらの方法でも構成でき、bashはコンマまたは中かっこで囲まれた中かっこのみを展開します。その他シェルは何らかの方法で動作する場合があります)。


1
@sehe:Uncommonが現在使用しているもの。引用されたエラーメッセージは、それを非常に明確に示しています(いいえ、bashにすることはできないようです)。
Jan Hudec

83
Windowsでは、PowerShellもブラケットを使用します。あなたはバック(git stash drop stash@`{1`})
ティックで

8
これがフィッシュで発生したおかげで、何が起こっているのかわからなかった。
Elijah Lynn

3
@Sergeyは、PowerShellに対してstash @ `{0`}(バッククォート)または 'stash @ {0}'(一重引用符)を使用します。
ハンス

4
あら、1年以上経って、問題があったのでまたこれに戻りました。どれだけめったにこれを使用しないかを示しています。それから、確かにその上にコメントを残したことを確認するために、それはフィッシュで起こると言います。面白すぎる。
Elijah Lynn

23

こんにちは。同じことが起こりました。それを修正する最も簡単な方法は:

$ git stash apply stash@"{2}"

私はWindowsのgit shellを使用しています。


2
またgit stash apply "stash@{2}"
rsenna 2017年

1
powershellで動作します
rsenna

同じgit stash apply "stash @ {2}"が機能しました。3つ目のstashをgit stashしようとすると、 "unknown option:-encodedCommand"メッセージが表示されました。ターミナルとしてpowershellが統合されたビジュアルスタジオコードを使用していました。
Rajan Chauhan 2017

1

EmacsでWindows上のMagitを使用しているときにこのエラーが発生した場合(私のように)、
この簡単な解決策が役立つことを願っています。

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

これは、引用します{}で3番目のパラメータに("stash", "cmd", "stash@{0}")によって実行されますmagit-run-git



1

単純な引用符の間にスタッシュIDを置くだけです。

git stash apply 'stash@{1}'

3
これはどのように質問に答えますか?stashリストに#3インデックスはありません。これが深刻な答えである場合、このコマンドが問題を解決する理由を説明してください
Brad

私はわかりやすくするために私の回答を編集しました。主なアイデアは、単純な引用符の間にスタッシュIDを置くことでした。「適用」または「ドロップ」サブコマンドに適用されます。スタッシュID番号は実際には重要ではありません
Adriano

このコードスニペットは問題を解決する可能性がありますが、説明を含めると、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。
DimaSan 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.