Points & Lines

【Git】git mergeコマンドで異なるブランチの更新分を取り込む

異なるブランチの更新分を取り込むには

git mergeコマンドを使用して、作業中のローカルブランチに対してリモートリポジトリ から異なるブランチの更新分を取り込むこともできます。

git mergeコマンドについての基本的なフローはこちら

【Git】fetch, merge, pullの基本的な使い方

例として、ローカルリポジトリの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 コマンドでリモートへ反映することにより、
同リモート追跡ブランチも更新されるため、この状態は解消されます。

Follow me!

モバイルバージョンを終了