40
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zshだとgit reset HEAD^とか、とにかく「^」が使えない。そんなとき。

Last updated at Posted at 2015-09-01

解決法

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において^はパターン否定。
他にもいろいろあるです。

例)拡張子がtxtでないものをls
% ls
# => tororo.txt  tororo_dir/ totoro.txt  totoro_dir/
#     ~/lsls

% ls ^*.txt
# => tororo_dir:
#    
#    totoro_dir:
#     ~/lsls
40
24
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?