Mac で使える git mergetool をいろいろ試してみる - 準備編 の続きです。

ediff は Emacs に添付されているマージツールです。 いつから添付されているのか調べてないですが最近のEmacsであれば標準で使えるはずです。

個人的には一番使いやすいと感じています。

git mergetool から ediff を起動するのはややめんどくさいです。

magitを使用していれば、コンフリクトしているファイルにカーソルを合わせて e を押すと起動できます。こちらのほうは設定いらずで楽ちんでした。

どうしても git mergetool から使いたい場合は git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す - 工夫と趣向と分別と。 を参考にするとできました。

具体的には上記の記事で紹介されてる emacsc をclone してきて設定しました。 個人的な使い方の問題で emacsclient への引数を付加したかったので少しいじりました。

ediff の画面

ediff を起動するとこのような画面になります。 配色設定を細かくやってないのでみづらいのは気にしないでください。

左が現在のブランチのファイルで、右がマージしようとするブランチのファイルになります。 下部がマージ結果になります。下部は直接編集することもできます。

a を入力すると 左側を選択できて、 b を入力すると右側を選択できて、下部に反映されます。

差分は2行あるのに、まとまってしまって不便に感じますが、どちらをベースするかという選択だと考えると良いことがわかりました。 その後 ! を入力すると細かく差分が表示され np で競合箇所を移動して ab で選ぶことができます。

編集が終了したら q で終了できます。 magit から起動した場合は ステージングされないので注意してください。 再度 e を入力するとやりなおすこともできます。

emacs 上で動くとカスタマイズが気軽にできるところも嬉しいし、なによりキーボードで操作しやすいです。 あえて問題を上げるなら ediff の設定がしてある配色を使わないと見にくいのと、emacs ユーザでない場合は覚えることが多すぎるということでしょう。

関連