Gitブランチをリベースする。EclipseでGitを使う(11)
はじめに
EclipseでGitを使う方法を説明していくシリーズの第11回目です。今回は、ブランチをリベースする方法について説明していきます。ブランチは、慣れてくるとどんどん作成することができるようになりますが、あまり作りすぎるのは逆によろしくありません。ではどうするのかというと、ブランチを統合するわけです。ブランチの統合は、「マージ」と「リベース」という大きく二つの方法があります。「マージ」と「リベース」双方を行えるようになることで、ブランチの管理がより適切に行えます。第9回ではマージを行う方法を説明しましたので、今回はリベースの説明を行っていきたいと思います。それでは早速、はじめていきましょう。今回はローカルリポジトリでの説明になります。
これまでのGit連載記事
- EclipseでGitを使う(1)Gitリモートリポジトリを構築する。
- EclipseでGitを使う(2)リモートリポジトリへプロジェクトをプッシュする。
- EclipseでGitを使う(3)リモートリポジトリのプロジェクトを取得する。
- EclipseでGitを使う(4)プッシュまでの流れをまとめる。
- EclipseでGitを使う(5)競合を解消する。
- EclipseでGitを使う(6)マージツールを使う。
- EclipseでGitを使う(7)コミットをリセットする。
- EclipseでGitを使う(8)プッシュをリセット(revert)する。
- EclipseでGitを使う(9)ブランチを作る。
- EclipseでGitを使う(10)ブランチをプッシュする。
1.サブブランチを作成する。
連載9回目の内容を参考に、サブブランチを作成してみましょう。以下のようにサブブランチが複数ある状態にしておきます。今回は新しいブランチにmasterとsub1を作成しました。この通りでなくて構いませんので、サブブランチがある状態にしておきましょう。
masterブランチとsub1ブランチには以下のようなJavaのソースを作成しておきます。
≪masterブランチ≫
public class Sample11 { public static void main(String[] args) { System.out.println("Sample11."); System.out.println("Sample11. master."); //←修正コミットで追加 } }
≪sub1ブランチ≫
public class Sample11 { public static void main(String[] args) { System.out.println("Sample11."); System.out.println("Sample11. sub1."); //←1度目の修正コミットで追加 System.out.println("Sample11. sub1."); //←2度目の修正コミットで追加 } }
2.ブランチをリベースする
さて、そもそもリベースとは何でしょうか?リベースは置き換えを意味します。
Gitにおいては、リベース元のブランチのコミット履歴をリベース先のブランチに統合することを指します。
今回は、sub1ブランチのコミット履歴をmasterにリベースしていきます。
それではリベースを行いましょう。
リベースしたいブランチのコミットログを右クリックすると「Rebase on Top」というメニューが出てきますのでクリックします。
または、左側のブランチGitリポジトリ-一覧からブランチを右クリックし、「リベース」をクリックしてもリベースが行えます。
すると、以下のようなエラーが発生します。
競合が発生したというメッセージですね。OKをクリックします。
すると以下のダイアログが表示されます。こちらもOKをクリックします。
↓修正
修正が完了したら、ワークスペース同期化で「マージ済みとマーク」をします。
Javaパースペクティブを見るとプロジェクト名の横に「対話式リベース~」と表示されています。
リベース処理が一時停止中のような状態です。
プロジェクトを右クリックし、チーム>リベース>リベースを続行をクリックします。
リベースが上手くいくと、以下のように成功しましたメッセージが表示されます。
masterの方で複数コミットがあった場合、その競合回数分、競合解消の手順を踏む必要がありますので、
上記の手順を繰り返す必要があることに注意しましょう。
3.リベース結果を確認する。
それではリベース結果を確認してみましょう。
sub1ブランチの修正結果を履歴に組み込んだ状態で、masterブランチができあがっていることが分かります。
sub1ブランチとmasterブランチが直列になっていますね。
4.まとめ
今回はリベースの手順を見ました。競合が発生したら解消するという点はマージと変わりありませんが、統合の仕方が異なってきます。このあたりの使い方の違いは、また折を見て説明していきたいと思います。