こんにちは。キャスレーコンサルティングSD(システム・デザイン)部の志賀です。

今回はGitのrebase時によくあるコンフリクト対応をGitKrakenを利用してご紹介したいと思います。

GitKrakenとは

Gitの数あるGUIツールの一つです。
最新のバージョンはVersion1.3.0になっています。(2016/05/18現在)
Windows,Mac,Linuxに対応しておりインストールは下記公式サイトからできます。

GitKraken
公式サイト

rebaseとは

rebaseとは、ざっくり説明するとブランチの親を変えるという意味です。特徴としては、リポジトリの履歴を書き換えるという強力な能力を持っています。

rebaseの用途

rebaseを利用する状況をとしては、大きく分けて下記のケースが多いと思います。

  • 複製元リポジトリの変化に対応する必要がある場合
  • マージを行う前にローカルリポジトリのコミット整理をする場合

rebaseの流れ

今回は前段で紹介した「複製元リポジトリの変化に対応する必要がある場合」を想定しています。

「複製元リポジトリの変化に対応する必要がある場合」とは、今回のシチュエーションでざっくり説明するとMASTERをメインブランチとして、コミットBの時点で、DEVELOPブランチを切り、MASTERと平行して新機能開発しているが、新機能開発が中途半端な状況の中でどうしてもMASTERの変更を取り込まなければいけないという場合です。

1.MASTERブランチとDEVELOPブランチで平行に作業を進めている状況です。
GitKraken
2.DEVELOPブランチにMASTERブランチの変更を取り込みます。(今回はここでコンフリクトが発生します。)
GitKraken
3.コンフリクトをマージさせて終了です。
GitKraken
※DEVELOPブランチの根本がBからDに変更されます。

GitKrakenを使ったrebase時のコンフリクト対処方法

では、実際にGitKrakenを使い、事前に用意したMASTERブランチ、DEVELOPブランチで確認していきます。
※MASTER、DEVELOPそれぞれに別の内容の修正をコミット済みです。

GitKraken

DEVELOPブランチを選択し、右クリック。
「Rebase MASTER onto DEVELOP」を選択。

GitKraken

すると、「Marge Failed」と警告がでました。
予想通りコンフリクトが発生しました。

GitKraken

WIP:HEADを選択すると、右側にコンフリクトファイルが表示されます。
ファイル名をクリックするとコンフリクトが起きているソースコードがmerge toolで表示されます。(バージョン1.3から)

GitKraken

任意のA、Bどちらかのソースコードを選択します。
Git mage tool
※マージが複雑な場合は、直接ソースコードを開き修正する必要があります。

これでやっと無事にRebaseできました。

GitKraken

いかがだったでしょうか。GitのGUIひとつ取っても、種類が多くありますがGitKrakenではコマンドを入力する必要がない為、GUIベースで各種操作が完結し、作業効率が速くなることが魅力の一つです。

ちなみにバージョン1.4からはショートカットコマンドも増えましたので使い方次第では、さらなる作業効率UPに繋がるかもしれません。

今回ご紹介した方法が開発の手助けとなれば幸いです。