MagitとはEmacsから使えるgitクライアントで、CUIながらグラフィカルなインターフェースを持ち、ショートカットキーを駆使して、少ない手数で色々なことができます。特に、sshでリモートで作業をしていてGUIを開くのが嫌な人などにはおすすめです。また、Emacsユーザーじゃない人にもおすすめです。
追記:@acpleさんより指摘いただき、c-u x
でできることが判明いたしました。ありがとうございます。
さて、Magitにはキーボードショートカットが多数割り当てられており、pull, push, branch, checkout, rebase, merge, fetch, などなどのコマンドを楽ちんに行えますが、本投稿の件名にあるgit reset --hard <commit id>
のキーが存在しません。いつもEmacsのshellのeshellを開いて、自分でコマンドを打っていました。しかし、コマンドの組み合わせで意外と簡単にやるやり方を見つけたので共有しておきます。
超簡単な話なのです。magitには、git reset --soft
のために、x
が割り当てられており、git reset --hard HEAD
(コミットしてないワーキングツリーの変更をすべて破棄するコマンド)に対してX
が割り当てられてます。これらの組み合わせで、まずx
を入力し、コミット番号を指定して、HEADをコミット番号(soft reset)に移動させます。これだと、今までいたコミットとの差分がステージングされている状態なので、X
を入力してhard reset する。それだけです(当たり前のやり方です)。ちなみに、僕はl l
でログを表示して、カーソルを移動したいコミットに移動させてx
でsoft rest してます。