はい、アンバサダーです。

前回のGitKrakenの記事に質問が来たので回答したいと思います。



質問内容は↓です
以下のようなrebaseはコマンドでやっているのですが、
$ git rebase -i HEAD~5
で直近の5個のコミットを整理したりまとめたりよくするんですが、
こういうのもGitKrakenでできますでしょうか。
結論から言えば、できます。


ということで、実際にどうやるか見ていきましょう。
ここではconflictの解消の練習用に作ったリポジトリを使用しています。


リポジトリをクローン直後のコミットグラフは以下の状態です。
masterとfeature-branch-1とfeature-branch-2の3つのブランチがあり、現在はfeature-branch-2にいる状態です。
feature-branch-1とfeature-branch-2はどちらもmasterからコミットを重ねた状態ですね。
01_start
では、ここでrebaseを行っていきます。
feature-branch-2の最新の状態をInitial commitの次に持ってくるようなちょっと治安の悪いrebaseを行いたいと思います。
GitKrakenは右クリックすればだいたいのことができるので、おもむろにInitial commitのコミットを右クリックします。
すると、以下のようなメニューが開きます。
02_start_rebase
rebaseしたいので、「Interractive Rebase 5 children of c9f916」というアイテムを選択します。
すると、以下のようなInterractive Rebase用の画面が開きます。
03_rebase
コマンドでrebase -iしたのと似たような見た目ですね。
今回はすべてのコミットをsquashしたいので、PickをすべてSquashに変更していきます。
04_squash
こうなりました。
コミットメッセージを編集したい場合は、Rewordのコミット(ここでは「Create base files」のコミット)をダブルクリックします。
そうすると、コミットメッセージの編集用のダイアログが開きます。
05_commit_message
ここで、Rewordになっていないコミット(例えば「Add gitignore」等)をダブルクリックしてしまうとそのコミットがRewordになるので注意してください。

Squashしたいコミットを選んで、コミットメッセージの編集ができたら画面下部にある「Start Rebase」ボタンをクリックすればRebaseが開始されます。
なお、やっぱやんぴする場合は「Cancel Rebase」です。
「Reset」をクリックすると、編集した内容がすべて初期状態に戻ります。編集しててよくわからなくなった時に使う感じですね。
では、Rebaseをしてみましょう。
06_complete
うまくできましたね。

今回はGitKrakenを使ってInteractive Rebaseをしてみました、いかがでしたでしょうか?