git のエディタを emacs や emacsclient にした状態の git rebase -i

git で歴史を修正したい時があると思います。

古いコミットを書き換える: 歴史修正主義者のための git rebase -i 入門 - 学習する機械、学習しない人間
http://goo.gl/p902q

こんなふうですね

git rebase -i HEAD~1

実行するとエディタでログの編集をはじめるわけですが、
vi / vim ならばそのままいつもどおり修正をすることになります。


ところが、

  • core.editor
  • GIT_EDITOR

などで git のコミットログ編集用エディタを
emacs や emacsclient にしている場合は少し様子が違います。
view-mode 、読み取り専用で開くのです。


f:id:nishikawasasaki:20120315003631p:image
pick を消して edit と書き直したくなるところですが、
pick の上にカーソルを持って行き、
"e" と入力すれば一瞬で edit に変わります。
f:id:nishikawasasaki:20120315003632p:image


キーはだいたい下のとおりです。

r  >>  reword
e  >>  edit
s  >>  squash  
k  >>  delete


望みどおりになれば C-x C-s して保存後にバッファを閉じれば完了です。


なんで読み取り専用で開くんだろうと少し考えてしまったのでメモ・・・。