Git - ブランチをマージする方法

    • このページをはてなブックマークに追加

    公開日:2017年04月12日 最終更新日:2019年09月26日

    Gitでブランチを作成する方法」では(master)ブランチから新規ブランチを作成する方法について解説しました。本コラムでは分岐したブランチを元の(master)ブランチにマージする方法について説明します。

    目次

    1. ブランチ後の履歴管理

    1.1. ブランチ後にファイルを作成する

    Gitでブランチを作成する方法」で作成した(func1)ブランチを使って分岐後に新規ファイルを作成し、履歴がどのように管理されるかを確認してみましょう。

    「Git-ws」フォルダーの二つのファイルは(master)ブランチでコミット済みです。(func1)ブランチを作成してブランチの切り替え(checkout)をしてHEADのポインターが「func1」を指している状態です。

    ●「Git-ws」フォルダー

    ●(func1)ブランチ

    「Git-ws」フォルダー内に、「function1」フォルダーと新規ファイルの「function1.txt」を作成します。「git status」で状態を確認してみましょう。

    ●「Git-ws」フォルダー

    ●[git status]

    [email protected] MINGW64 ~/Documents/Git-ws (func1)
    $ git status
    On branch func1
    Untracked files:
    (use "git add ..." to include in what will be committed)
    function1/
    nothing added to commit but untracked files present (use "git add" to track)

    ▲ページトップへ戻る

    1.2. 新規ブランチで変更履歴をコミットする

    func1 ブランチ(On branch func1)で新規フォルダーの「function1」が作成されたのが確認できましたので、ステージング・エリアに登録(add)し、コミット(commit)を実行してみましょう。

    ●[git add]

    [email protected] MINGW64 ~/Documents/Git-ws (func1)
    $ git add --all

    ●[git commit]

    [email protected] MINGW64 ~/Documents/Git-ws (func1)
    $ git commit -m "func1-first MSG"
    [func1 d6c6919] func1-first MSG
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 function1/function1.txt

    「git status」でコミット履歴を確認します。

    ●[git log]

    [email protected] MINGW64 ~/Documents/Git-ws (func1)
    $ git log --oneline --decorate --graph --all
    * d6c6919 (HEAD -> func1) func1-first MSG
    * 8b17b87 (master) second commit MSG
    * 5ffe5ec first commit MSG

    「func1ブランチ」でコミットID(d6c6919)が作成されました。

    ●(func1)ブランチ

    ▲ページトップへ戻る

    1.3. ローカルブランチの確認【git branch -a】

    作成したブランチの確認をするには、「git branch」コマンドを実行します。引数に「-a」をつけるとすべてのブランチを表示します。

    ●[git branch -a]

    [email protected] MINGW64 ~/Documents/Git-ws (func1)
    $ git branch -a
    * func1
    master

    ここでは、ローカルブランチしか作成していませんので引数の「-a」を指定しなくて同様の表示になります。

    ▲ページトップへ戻る

    2. ブランチを切り替えて作業する【git checkout】

    (func1)ブランチの作業内容を保留にしたまま、(master)ブランチで作業を続けることもできますが、(func1)ブランチでの作業内容をマージすることも可能です。一旦(func1)ブランチを(master)ブランチにマージしてみましょう。

    (func1)ブランチ上の作業から元の(master)ブランチに切り替えて作業をする場合は、「git checkout [ブランチ名]」コマンドを実行します。

    ●[git checkout]

    [email protected] MINGW64 ~/Documents/Git-ws (func1)
    $ git checkout master
    Switched to branch 'master'
    [email protected] MINGW64 ~/Documents/Git-ws (master)

    「Git-ws」フォルダーを確認すると(func1)ブランチで作成した「function1」フォルダーは表示されていません。

    ●「Git-ws」フォルダー

    「git checkout」コマンドでブランチの切り替え作業を行うと、(master)ブランチの最終コミットの状態に戻ります。

    ●(master)ブランチへ切り替え

    ▲ページトップへ戻る

    3. ブランチをマージする

    3.1. ブランチのマージを確認する

    ブランチのマージをする前に、ブランチのマージを確認するコマンドがありますので、(func1)ブランチをマージする前の状態を確認してみましょう。(master)ブランチに切り替えた状態で、[git branch --merged]コマンドを実行して下さい。

    ●[git branch --merged]

    [email protected] MINGW64 ~/Documents/Git-ws (master)
    $ git branch --merged
    * master

    (master)ブランチにマージしたブランチはありませんので、一覧には[* master]のみ表示されます。[--merged]ではなく、[git branch --no-merged]コマンドを実行するとマージされていないブランチを表示する事ができます。

    ●[git branch --no-merged]

    [email protected] MINGW64 ~/Documents/Git-ws (master)
    $ git branch --no-merged
    func1

    先ほど作成した(func1)ブランチは、まだマージされていませんので一覧に表示されます。(func1)ブランチをマージした後に、[git branch --merged]コマンドを実行してきちんとマージされているか確認してみましょう。

    ▲ページトップへ戻る

    3.2. [git merge]コマンドでブランチをマージする

    それでは先ほど作成した(func1)ブランチの作業内容を(master)ブランチにマージしてみましょう。
    (master)ブランチへの切り替えをした状態で「git merge [ブランチ名]」コマンドを実行します。

    ●[git checkout]

    [email protected] MINGW64 ~/Documents/Git-ws (master)
    $ git merge func1
    Updating 8b17b87..d6c6919
    Fast-forward
    function1/function1.txt | 0
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 function1/function1.txt

    (func1)ブランチでコミット(commit)したファイルの管理履歴や commit ID 情報を確認する事ができます。

    ●(master)ブランチと(func1)ブランチのマージ

    (master)ブランチに(func1)ブランチで作成した「function1/function1.txt」ファイルが追加されましたので、「Git-ws」フォルダーを確認してみましょう。

    ●「Git-ws」フォルダー

    ▲ページトップへ戻る

    4. マージしたブランチの確認

    4.1. [git log]コマンドで確認する

    「git log」を確認すると、(master)ブランチの管理履歴には(func1)ブランチのコミットが最終コミットとして追加されてるのが分かります。

    ●[git checkout]

    [email protected] MINGW64 ~/Documents/Git-ws (master)
    $ git log
    commit d6c6919f9121585b0ffe2b24687c60f4ac4d124a
    Author: Taro Yamada
    Date: Fri Apr 14 12:16:07 2017 +0900
    func1-first MSG

    commit 8b17b87ea7f89b48a32baefb55de932a15158383
    Author: Taro Yamada
    Date: Thu Apr 13 17:27:22 2017 +0900
    second commit MSG

    commit 5ffe5ecb4f6e64765a7b26cbd204568030708287
    Author: Taro Yamada
    Date: Thu Apr 13 17:04:10 2017 +0900
    first commit MSG

    ▲ページトップへ戻る

    4.2. [git branch --merged]コマンドで確認する

    マージ前に確認した[git branch --merged]コマンドで(master)ブランチにマージされたブランチとして(func1)が表示されるか確認してみましょう。

    ●[git branch --merged]

    [email protected] MINGW64 ~/Documents/Git-ws (master)
    $ git branch --merged
    func1
    * master

    マージされた(func1)ブランチがリストに表示されます。

    ●[git branch --merged]

    [email protected] MINGW64 ~/Documents/Git-ws (master)
    $ git branch --no-merged

    [git branch --no-merged]コマンドを実行すると、マージされていないブランチはない為、リストには何も表示されません。マスターブランチにマージされていないブランチのリストを表示したい場合など実行します。

    ▲ページトップへ戻る

    【関連文書】 WindowsにGitをインストールする方法
    【関連文書】 Git for Windows の使い方 ~準備編~
    【関連文書】 Git の使い方 ~リポジトリの作成とコミット~
    【関連文書】 Git の使い方 ~リポジトリへ変更内容を記録する方法~
    【関連文書】 git add の取り消し方法
    【関連文書】 git コマンド ~コミットの取り消し~
    【関連文書】 Gitでブランチを作成する方法
    【関連文書】 Git - ブランチを削除する方法

    最新案件情報をチェック!

    年収350万円〜1000万円
    勤務地 東京都 港区
    年収600万円〜1000万円
    勤務地 東京都 渋谷区
    年収400万円〜600万円
    勤務地 東京都 品川区
    年収350万円〜600万円
    勤務地 東京都 世田谷区
    • このページをはてなブックマークに追加

    おすすめ記事

  • ピックアップ

    正社員

    【Ruby on Rails】Webエンジニア|自社サービスの開発・運用 NEW

    年収 :350万円〜1000万円

    【仕事内容】 ・自社サービスBUYMAの開発・運用 【主な技術】 Ruby on Rails, Linux(オンプレミス)...

    株式会社エニグモ

    正社員

    【Node.js/Express】ソフトウェアエンジニア|ファンコミュニティアプリの開発 NEW

    年収 :600万円〜1000万円

    ファンコミュニティアプリ『fanicon』の開発 【faniconで使っている開発環境】 ・API: Node.js, Exp...

    THECOO株式会社

    正社員

    【Ruby on Rails】Webエンジニア|自社サービスの開発 ◎充実の福利厚生

    年収 :400万円〜600万円

    【具体的な業務内容】  「 GCP(giftee campaign platform)」のビジネス戦略及び開発 【開発環境...

    株式会社ギフティ

    正社員

    【PHP/HTML/CSS/JavaScript】WEBエンジニア|自社サービスの開発・運用

    年収 :350万円〜600万円

    MIddleFieldsが運営するWEBサービスの開発、運用

    MiddleField株式会社