Eclipse EGitメモ、その2 マージの方法
これはEclipse EGitの使い方講座の一部なので、そちらを参照されたい
マージの方法について述べる。
カレントを「マージされる側」にする
例えば、masterからのブランチsampleで作業し、そこでの修正内容をコミットしたとする。うまく行ったのでmasterにマージしたいとする。
しかし、カレントのブランチをmasterに変更しないとマージはできないようだ。gitの仕組みが良くわかってないのだが、少なくともEGitでやる限りは動作しないようだ。
つまり、カレントを「マージされて変更される側」にしないといけない。おそらくはマージすると、衝突(conflict)が起こる可能性もあるので、そのときに対応できるようにするためだろう。
この件についての追加
結論から言えばEGitではできないようなのだが、gitにはFast-Forwardマージというものがある。ブランチAからブランチBを作成し、BでコミットするあいだAにはコミットが無いものとし、その後Bの内容をAにマージしたいときは、単純にAのHeadを動かせばよい(Fast-Forward)。マージ(混ぜる)必要も無いということのようだ。
EGitでカレントがBのままAのFast-Forwardができないものか調べたのだが、そのようなものが見つからなかった。
変更の確認
その前に変更を確認してみる。該当するsampleのコミットをクリックすると、右下に変更されたファイルが表示される。右上の右から二番目のボタンをクリックして「Compare Mode」にする。
この状態で変更ファイルをダブルクリックして表示すると。その前の状態との比較表示がされる。
※先のCompare ModeがOFFの場合は、ファイル全体が表示されるだけで、前状態との比較はされない。
マージできないところでマージ操作をする
マージするには、マージするコミットを右クリックし、Mergeを選択すれば良いのだが、マージできない場所でこの操作を行っても何も起こらない。例えば、masterのコミット自体を右クリックし、Mergeを選択してみる。
すると「Already up-to-date」などという表示になり、何も起こらない。
マージを行ってみる
マージしたいのはsampleの先頭なので、これを右クリックしてMergeを選択する。
すると、以下のようになり、masterにマージされたことがわかる。
他のマージ方法
上記はコミット履歴からマージする方法なのだが、プロジェクトを右クリックしてもマージを行うことができる。
出てくるダイアログにおいてsampleを選択してMergeを押す。