私は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
のすべてに一致します。の場合、-- の後に何も続きません。これは、一致の後に何もない以外のものが続くことを意味します。これは、空でない文字列で始まり、その後に続くファイル名に一致するという言い方です。ファイル、、およびを指定すると、パターンは および に一致します。X
HEAD^
^
HEAD^
HEAD
HEAD^
HEAD
HEAD
HEAD1
HEAD2
HEAD^
HEAD1
HEAD2
^
文字を回避するための簡単な回避策は、git reset head~1
代わりに を使用することですgit reset head^
。
両者の違いについては、この投稿を参照してください。