ブランチをマージする[git merge][Fast Forward][Sourcetree]

2018年12月21日

ブランチでの作業を終えた場合に、他のブランチや元となるブランチへマージさせる必要があります。

 

まずは視覚的に分かりやすいSourcetree(Macバージョン)による方法で説明します。

 

いま下記のようにmytaskブランチ上で作業しています。mytaskブランチにおいてtext.txtファイルは「abc」のように記述されており、masterブランチでは「ab」と一つ遅れています。

 

 

mytaskブランチをmasterブランチにマージします。

 

一度masterブランチに戻ったらmytaskブランチ上で右クリックして「mytaskをmasterへマージ」を選択します。

 

ウィンドウが開くのでそのままOKします。

 

masterブランチとmytaskブランチが揃っているのが確認できます。

 

このようにmytaskブランチで作業している間に、masterブランチでは一度もコミットしていない場合、単に遅れを取り戻すような形でマージされています。これを「Fast Forward」と呼びます。

 

上記の流れをGitコマンドでおこないます。

 

現在のブランチを確認。下記ではmytaskブランチにいます。

 

masterブランチに移動します。

 

mytaskブランチを、今いるmasterブランチにマージさせます。「Fast-forward」と表示されているのが確認できます。

 

 

マージコミット


次にFast-forwardでない場合のマージの様子をみてみます。

 

下記は、text1.txtとtext2.txtの2つのファイルがあり、masterブランチでは「text1.txtにaを追加」、text2ブランチでは「text2.txtにaを追加」している状態です。つまりそれぞれのブランチでコミット作業をおこなっている状態です。

 

 

masterブランチにtext2ブランチをマージさせてみます。

 

テキスト編集モードに切り替わるのでそのまま:wqで保存します。

 

マージされると下記のように表示されます。「recursive」

 

実際masterブランチでは「text1.txt」「text2.txt」共にaが追加されている状態となります。Sourcetreeでは下記のように表示され、新たなコミットが生成されているのが確認できます。これをマージコミットと呼びます。

 

 

はじめに説明したFast-forwardが可能な状態であるマージの場合にも、マージの履歴をあえて残すために「–no-of」オプションを設定し、マージコミットさせることができます。

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー