解決法
zsh-git-escape-magicを使う。
@quenhuluさんからのご紹介です。導入も簡単でとても便利です。ありがとうございます!
zsh-git-escape-magic を使うと ^ などが自動でエスケープされます。
https://github.com/knu/zsh-git-escape-magic
その他
エスケープする。
バックスラッシュ
% git reset HEAD^
# => zsh: no matches found: HEAD^
# お好きなものを
% git reset HEAD\^
% git reset --soft HEAD\^
% git reset --hard HEAD\^
% git reset HEAD\^\^
% git reset HEAD\^\^\^
# ・・・
クォート
@hage@githubさんからのご紹介です。キャレット(^
)が多い時に見やすくて有効ですね、ありがとうございます!
エスケープする方法の他にクオートする方法があります。
% git reset 'HEAD^'
HEAD
は@
に置き換えれる
こちらも@hage@githubさんからのご紹介です。git 1.8.5
よりHEAD
のエイリアスとして@
が使えるようになったようです。タイプ数が3も減るのは素晴らしいですね。ありがとうございます!
それとどのバージョンからか忘れましたが、HEADのエイリアスとして@が用意されました。以下の二つは同じ意味です。
% git reset 'HEAD^'
% git reset '@^'
こんな方法も。
zsh の exntended_glob と HEAD^^^ を共存させる。 - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech
原因
便利なextended_glob
オプションが原因。
setopt extended_glob
のようにextended_globオプションをセットしていると起きてしまう。
extended_glob
において^
はパターン否定。
他にもいろいろあるです。
% ls
# => tororo.txt tororo_dir/ totoro.txt totoro_dir/
# ~/lsls
% ls ^*.txt
# => tororo_dir:
#
# totoro_dir:
# ~/lsls