icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

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

目次

1時間でできる無料体験!

 

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

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

まとめ

今回は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アプリリリースなど、ボランティアプログラミング教育活動行っている。

 

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

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

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する