IntelliJ IDEAの「git rebase -i」が素晴らしく使いやすい件

2016年8月28日

IntelliJ IDEA

過去のコミットを変更することができる git rebase -i

通常、git rebase -i はコマンドラインで行いますが、Jetbrains 社の IDE(IntelliJ IDEA, PhpStorm, RubyMine など)で行う git rebase -i がとても使いやすいので紹介します。

動作確認環境

  • IntelliJ IDEA 2016.2
  • PhpStorm 2016.2

目次

  1. 変更したいコミットのひとつ前のハッシュ番号をコピーする
  2. コピーしたハッシュ番号を Rebase branch の Onto に貼り付ける
  3. rebase の Action を指定する
  4. Conflict 時の強い味方 3 列 Merge
  5. git rebase --abort もしくは --continue したい場合は
  6. 3 列の Conflict 解決画面を表示したい場合は
  7. reword 以外の Action を指定したい場合は

コマンドラインの git rebase -i を使ったことがある方向けに書いていますので、git rebase -i ってなんぞや?という方は以下の記事に先に目を通しておくと良いと思います。

git-rebase-i-usage
あのコミットをなかった事に。git rebase -i の使い方

以前、Gitの使い方、よく使うGitコマンド という記事を書きましたが、git rebase -i の項目に書き足したい ...

続きを見る

変更したいコミットのひとつ前のハッシュ番号をコピーする

以下のようなコミットログがあるとします。
今回は、以下のコミットログのコミットメッセージの「4」を「4edit」に変更してみます。

rebase前のコミットログ

コミットメッセージ「4」のひとつ前のコミットを選択して右クリックし、「Copy Revision Number」を選択してコミットのハッシュ番号をコピーします。

Copy Revision Number

コピーしたハッシュ番号を Rebase branch の Onto に貼り付ける

上部メニューの VCS > Git > Rebase... を選択して rebase を開始します。Rebase branch ウィンドウが立ち上がるので、「Onto」に先ほどコピーしたハッシュ番号を貼り付けます。

rebase設定

Interactive にチェックが入っていることも念のため確認しておきましょう。

rebase の Action を指定する

Rebase Committs ウィンドウで rebase の Action を指定します。今回はコミットメッセージを変更したいので、コミットメッセージ「4」の Action に「reword」を選択します。

rewordを選択

ebase Committs ウィンドウの左下の窓みたいなアイコンをクリックすると、そのコミットの diff を表示することができます。

新しいコミットメッセージを入力します。

rewordでコミットメッセージを変更

rebase が成功し、コミットメッセージが変更されました。

rebase後のコミットログ

Conflict 時の強い味方 3 列 Merge

rebase 中に Conflict すると、以下のように Conflict したファイルが一覧表示されます。ファイルを選択して「Merge」ボタンをクリックします。

Merge file

3つの列が表示され、左と右の列に Conflict したコミットが表示されます。左右の変更点を見ながら、真ん中の列を Conflict 解決後の状態にします。

Resolve Conflicts

git rebase --abort もしくは --continue したい場合は

上部メニューの VCS > Git > の下のほうに「Abort Rebasing」と「Continue Rebasing」があるので適宜選択してください。

Abort Rebasing

3 列の Conflict 解決画面を表示したい場合は

3 列の Conflict 解決画面を閉じてしまって、もう一回呼び出したい時があると思います。

上部メニューの VCS > Git > の真ん中くらいに「Resolve Conflicts...」から呼び出すことができます。

resolve Conflicts

rebase だけでなく、merge で Conflict したときや、stash から pop したときの Conflict でも使えます。

reword 以外の Action を指定したい場合は

今回は reword しか紹介していませんが、他の Action も指定できます。コミットの順番を変えたい場合は、左下の上下アイコンで。コミットを削除したい場合は「skip」Action で。Action によっては 「Continue Rebaseing」が必要になると思いますので、先ほど紹介した方法で適宜実行しましょう。

rewordを選択

まとめ

  • IntelliJ IDEA でも、ターミナルと同じように git rebase -i ができる
  • git rebase --abort, --continue もできる
  • 3 列 Conflict 解決が便利
  • rebase 前の diff 表示が便利

-技術ブログ
-