git mergeを使ってブランチをマージする方法【初心者向け】

初心者向けにgit mergeを使ってブランチをマージする方法について解説しています。マージという単語自体聞いたことがある人もいるかもしれませんが、開発現場では必ず使用します。実際にコマンドを書きながら説明しているので、ぜひご覧ください。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Git(ギット)はとても便利なバージョン管理システムです。

今回は、Gitの使用においても重要なgit mergeの使い方を紹介していきたいと思います。

目次

 

git mergeとは

git mergeとは、各ブランチで編集した作業を反映させるためのコマンドです。

各ブランチで開発された作業はそのままだと、マスターのブランチには反映されません。

そのままだとせっかく開発した機能が使用できないという事態になってしまいます。

そうならないために、マスターブランチに各ブランチで編集した作業を反映させるためのコマンドがあります。

それがgit mergeです。

 

次の写真で緑色の部分でマージを行っています。

つまり、元々マスターブランチで開発していたものをsample_branchというブランチでバグの修正を行い、修正が完了したらマスターブランチに作業を反映させています。

今回はそんなgit mergeを実際に使用してみたいと思います。

 

【動画でも解説しています。クリックで見る!】

 

[PR] 無料で現役エンジニアから学べる

実際にgit mergeを使用してみよう

それでは実際にgit mergeを使用してみましょう。

今回はsampleというディレクトリ内で、「sample_branch」というブランチを作成し、そのブランチで「sample.html」を作成し、マスターブランチにその変更をマージするという方法で行いたいと思います。

 

デフォルトの状態だとブランチも何もない状態なので、master.htmlというファイルを作成してコミットしましょう。

するとmasterというブランチが作成されます。

 

次にsample_branchというブランチを作成し、以下のように打ち込みブランチを移動してください。

git checkout sample_branch

git12_01

 

これで、次の赤丸部分に移動します。

 

次にsample.htmlというファイルを作成して

add sample.html

で追加してください。

 

そしてそのファイルをコミットしてください。

git commit -m "sample"

“sample”というのは、メモを残している内容です。

とりあえずsampleと記載しています。

 

最後にマスターブランチに移動し、git merge sample_branchと打ち込んでください。

git merge sample_branch

 

git logを確認して以下のようになっていると成功です。

git12_02

 

処理の位置としては緑色の修正リリースの部分をイメージしていただくと良いです。

 

 

git mergeを使用する場合の注意点

ここでは、git mergeを使用する場合の注意点について確認します。

 

コミットが済んでいないファイルが残っている状態で git merge しない

コミットが済んでいない状態で git merge を行うと、ブランチの変更の取り込み漏れの原因になります。

すべてコミットが済んでいる状態で git merge するようにしましょう。

コミットが済んでいるかどうかの確認は、 git status コマンドで確認できます。

git status

 

実行結果は以下のようになります。

コミットが済んでいないファイルがあると、以下のように表示されます。

 

コミットが済んでいないファイルが残っている状態で git checkout しない

こちらは git merge の前段階の git checkout についてですが、merge と同様に、コミットが済んでいない状態で checkout するのもブランチの変更の取り込み漏れの原因につながりますのでやめましょう。

コミットが済んでいない状態で checkout すると、対象のファイルが表示されます。

git checkout branch1

 

実行結果は以下のようになります。

コミットが済んでいないファイルがあると、以下のように表示されます。

 

マージで衝突が発生した場合

同じファイルを別々の開発者が修正し、git merge を行うと、修正内容によっては衝突が発生する場合があります。

git merge

 

衝突が発生した場合、実行結果は以下のようになります。

CONFLICTと表示されているのが分かりますね。

CONFLICTとはコンフリクトと読み、衝突が発生しているという意味です。

 

この場合、衝突したファイルを修正した後、git add、git commit の順に対応します。

git add hello.html
git commit -m "hello.htmlの衝突を修正"

 

マージを元に戻す方法

ここでは、マージを元に戻す方法をご紹介します。

上記のように、git merge により衝突が発生しても、修正方法はありますが、マージ自体を元に戻したい場合もあります。

その場合、マージ後にコミットしたか、していないかによりコマンドが異なります。

 

マージした後、まだコミットしていない場合

git reset --hard HEAD

 

マージした後、コミットも行っている場合

git reset --hard ORIG_HEAD

 

新たに別のブランチを作成しマージする際のパターンの例

新たに別のブランチを作成後、ブランチ名を間違えて作成したため削除する処理を踏まえて、更新して、マージするという処理をしてみましょう。

1.sample_branchへ移動します

git checkout sample_branch

 

2.techacademyブランチを作成して移動します

-bオプションを利用することで、ブランチの作成と移動を同時に行うことができます。

git checkout -b techacademy

 

3.間違えてtechacademy2ブランチを作成した場合の対処法

techacademyブランチではなく、techacademy2ブランチを間違えて作成した場合は、一度別のブランチへ移動して、-dオプションで間違えたブランチを削除する必要があります。

git checkout sample_branch
git checkout -d techacademy2

 

4.remoteに反映します

-aオプションでは、変更されたファイルすべてを指定しています。

-mオプションでは、コミットメッセージを同時に指定しています。

git add .
git commit -am "techacademyブランチで修正しました。"
git push origin techacademy

 

5.マージします

sample_branchに移動後、techacademyブランチをマージします。

git checkout sample_branch
git merge techacademy

 

まとめ

今回はgit mergeについて解説していきました。

git mergeを使用すれば簡単にブランチの変更を取り込むことができます。

ぜひ覚えておくようにしましょう。

また、現在の状況が分かるように、git status コマンドなどでしっかりと状況を確認してから git merge を使用するようにしましょう。

 

大石ゆかり

masterに反映することができました♪

田島悠介

ブランチを切った時はマージしないと反映されないから、覚えておかないとね♪

大石ゆかり

はい♪

 

執筆してくれたメンター

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長開発実績:PHPフレームワークによるフランチャイズ企業向け会員制SNS。Shopifyによる海外進出用大規模ネットショップ構築。Vue.jsによる金融機関向け内部アプリ。AWSやLinuxハウジングサーバでの環境構築。人工知能を利用した画像判別システム。小売チェーン店舗用スマホアプリ。Wordpressによる不動産チェーン店向け賃貸・売買仲介システム。基幹システム移管用データコンバートシステム。小学生がオリジナルAndroidアプリをGoogle Playでリリース、NHK Whyプログラミング入賞、全国Programing Festival入賞、中学生がSNS型PWAアプリリリースなど、ボランティアプログラミング教育活動行っている。

 

[お知らせ]テックアカデミーでは自宅で学べるオンライン完結のプログラミング講座を開催しています。わからないことをチャットで質問すると、現役エンジニアのメンターが毎日すぐに回答します。

まずは一度、無料体験「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!