私はcygwinでzshとpreztoを使用しています。この git コマンド 'git reset HEAD5' を入力すると、zsh は HEAD^ を見つけられません。しかし、bash を使用するように切り替えると、機能します。
$ git reset HEAD^
zsh: no matches found: HEAD^
誰も同じ問題を見たことがありますか?
この文字は、zsh のファイル名展開で特別なものとして扱われますが、オプションが設定され^ている場合のみです。EXTENDED_GLOB
zsh% setopt noEXTENDED_GLOB
zsh% echo HEAD^
HEAD^
zsh% setopt EXTENDED_GLOB
zsh% echo HEAD^
zsh: no matches found: HEAD^
zsh%
Bash にはこの機能がありません。(正確には、bash には によって有効になる拡張グロブ機能がありますが、bash の拡張グロブ構文は文字を特別なものとしてshopt -s extglob扱いません。)^
この機能を有効にすると、^は に似て*いますが意味が異なる特殊文字です。のよう*に、一重引用符または二重引用符で囲むか、前にバックスラッシュを付けてエスケープすることにより、その特別な意味を抑制することができます。引用は最も簡単な解決策です。
それよりも
git reset HEAD^
これを試して:
git reset 'HEAD^'
^ワイルドカードを使用しないようにすればよいので、ワイルドカードの意味は関係ありませんが、とにかく言及します。zsh のマニュアルによると、 pattern以外^Xのすべてに一致します。の場合、-- の後に何も続きません。これは、一致の後に何もない以外のものが続くことを意味します。これは、空でない文字列で始まり、その後に続くファイル名に一致するという言い方です。ファイル、、およびを指定すると、パターンは および に一致します。XHEAD^^HEAD^HEADHEAD^HEADHEADHEAD1HEAD2HEAD^HEAD1HEAD2
^文字を回避するための簡単な回避策は、git reset head~1代わりに を使用することですgit reset head^。
両者の違いについては、この投稿を参照してください。