【Git】git mergeコマンドで異なるブランチの更新分を取り込む
異なるブランチの更新分を取り込むには
git mergeコマンドを使用して、作業中のローカルブランチに対してリモートリポジトリ から異なるブランチの更新分を取り込むこともできます。
git mergeコマンドについての基本的なフローはこちら
例として、ローカルリポジトリのsub1ブランチに、派生元のブランチであるmasterブランチの更新分を取り込みます。
1. masterブランチのリモート追跡ブランチ origin/master を最新の状態にする
(現在の作業ブランチはsub1とする)
git fetch origin master
2. masterブランチ(リモート追跡)とsub1ブランチの差分を比較
git diff sub1 origin/master
3. 差分をマージ
git merge origin/master
マージに成功すると、下記のようなメッセージを表示されますが、:qで閉じます。
Merge made by the 'recursive' strategy. mater.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mater.txt
注意
マージする内容によってはコンフリクト(衝突)が発生する場合がありますが、その場合は対象のファイルを開いて解消します。
マージ完了した直後、 git status コマンドによってahead(先行)を確認できますが、これは他のブランチの状態を取り込んだことにより、リモート追跡ブランチよりもコミットの状態が先に進んでいる状態となったためです。
(origin/sub1 よりもsub1が進んでいるという意味)
On branch sub1 Your branch is ahead of 'origin/sub1' by 2 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean
上記のメッセージにあるとおり、git push コマンドでリモートへ反映することにより、
同リモート追跡ブランチも更新されるため、この状態は解消されます。