2012年10月20日土曜日

Eclipse EGit でのリベースのやりかた

Gitで便利な機能の1つ、リベース。
リベースの機能や動作自体については、各所で解説されているのでここでは説明しません。

便利なリベースですが、普段 Eclipse を用いて開発を行い、EGit プラグインのお世話になっていますから、リベースもぜひ EGit でやりたいでしょう。

しかし、EGit上でのリベース手順の情報が少なく、迷うことがあるでしょう。
ということで、今回は、Eclipse プラグイン EGit を用いてリベースを行う手順について説明します。

まず、リベースを行いたいブランチをチェックアウトします。

リベースを始める前に、ヒストリーを出しておくといいでしょう。
「プロジェクトのルートディレクトリを 右クリック → チーム → ヒストリーに表示」で出しておきます。

それではリベースを開始しましょう。
「プロジェクトのルートディレクトリを 右クリック → チーム → リベース...」と選択します。



リベースをどのブランチの上に行うか選択するダイアログが表示されます。


任意のブランチを選択し、「リベース」をクリックします。


リベースが始まります。表示させておいたヒストリーを見ると、リベースが行われる様子が表示されるので面白いです。

途中、リベースで適用される差分とそのコミットでの差分が衝突すると、ダイアログが表示されます。


そのままマージを開始するので「Start Merge Tool to resolve conflicts」が選択されているのを確認し「OK」をクリックします。

するとマージ方法を聞かれます。


ここでは「Use the workspace version of conflicting files」の方を選択しておきます。

マージ・ツールが起動します。
マージ・ツールではリベース前のコミットに記録されているファイルが右側、リベース対象のマージ中のファイルが左側に表示されるの出ます。左側を編集して、意図する形にします。(右側はそもそも編集不可になっています)

衝突を起こしているファイルは赤い両矢印のマークが表示されるので、それらのファイルを全て正しく編集することになります。衝突箇所が<<<<<<<,=======,>>>>>>>で区切られているのはGitコマンドラインツールと同じで、そのあたりはGit本家の解説をご参照ください。

衝突を解決しているときに、HEADと比べてみると参考になります。マージ・ツールではリベース前のコミットのファイルが表示されますが、衝突解決中のHEADはリベースが適用できた最後のコミットのファイルになっているので、比較することで衝突解決後の(リベースされたブランチ上での)変化がわかるからです。

衝突を解決できたと思った時点で、そのファイルについて「ファイルを右クリック → チーム → 比較 → HEAD」と選択して比較してみましょう。


さて、衝突を解決できたらそのファイルを Add します。Add すると、赤い両矢印の衝突マークが消えて、アスタリスクのステージングマークが表示されます。

全てのファイルの衝突を解決し Add  し終わったら、プロジェクトのルートディレクトリに表示されていた赤い両矢印の衝突マークが消えて、アスタリスクのステージングマークが表示されるでしょう。

その状態になったら、「プロジェクトのルートディレクトリを 右クリック → チーム → リベース → Continue Rebase」を選択します。


これでリベース処理が再開されます。

衝突が起きるたびに上記手順を繰り返し、最後に完了メッセージが表示されれば、リベースは完了です。

0 件のコメント:

コメントを投稿