こんにちは。キャスレーコンサルティングSD(システム・デザイン)部の志賀です。
今回はGitのrebase時によくあるコンフリクト対応をGitKrakenを利用してご紹介したいと思います。
GitKrakenとは
Gitの数あるGUIツールの一つです。
最新のバージョンはVersion1.3.0になっています。(2016/05/18現在)
Windows,Mac,Linuxに対応しておりインストールは下記公式サイトからできます。
rebaseとは
rebaseとは、ざっくり説明するとブランチの親を変えるという意味です。特徴としては、リポジトリの履歴を書き換えるという強力な能力を持っています。
rebaseの用途
rebaseを利用する状況をとしては、大きく分けて下記のケースが多いと思います。
- 複製元リポジトリの変化に対応する必要がある場合
- マージを行う前にローカルリポジトリのコミット整理をする場合
rebaseの流れ
今回は前段で紹介した「複製元リポジトリの変化に対応する必要がある場合」を想定しています。
「複製元リポジトリの変化に対応する必要がある場合」とは、今回のシチュエーションでざっくり説明するとMASTERをメインブランチとして、コミットBの時点で、DEVELOPブランチを切り、MASTERと平行して新機能開発しているが、新機能開発が中途半端な状況の中でどうしてもMASTERの変更を取り込まなければいけないという場合です。
1.MASTERブランチとDEVELOPブランチで平行に作業を進めている状況です。
2.DEVELOPブランチにMASTERブランチの変更を取り込みます。(今回はここでコンフリクトが発生します。)
3.コンフリクトをマージさせて終了です。
※DEVELOPブランチの根本がBからDに変更されます。
GitKrakenを使ったrebase時のコンフリクト対処方法
では、実際にGitKrakenを使い、事前に用意したMASTERブランチ、DEVELOPブランチで確認していきます。
※MASTER、DEVELOPそれぞれに別の内容の修正をコミット済みです。
DEVELOPブランチを選択し、右クリック。
「Rebase MASTER onto DEVELOP」を選択。
すると、「Marge Failed」と警告がでました。
予想通りコンフリクトが発生しました。
WIP:HEADを選択すると、右側にコンフリクトファイルが表示されます。
ファイル名をクリックするとコンフリクトが起きているソースコードがmerge toolで表示されます。(バージョン1.3から)
任意のA、Bどちらかのソースコードを選択します。
※マージが複雑な場合は、直接ソースコードを開き修正する必要があります。
これでやっと無事にRebaseできました。
いかがだったでしょうか。GitのGUIひとつ取っても、種類が多くありますがGitKrakenではコマンドを入力する必要がない為、GUIベースで各種操作が完結し、作業効率が速くなることが魅力の一つです。
ちなみにバージョン1.4からはショートカットコマンドも増えましたので使い方次第では、さらなる作業効率UPに繋がるかもしれません。
今回ご紹介した方法が開発の手助けとなれば幸いです。