「 Gitでブランチを作成する方法」では(master)ブランチから新規ブランチを作成する方法について解説しました。本コラムでは分岐したブランチを元の(master)ブランチにマージする方法について説明します。
目次
1.1. ブランチ後にファイルを作成する
1.2. 新規ブランチで変更履歴をコミットする
1.3. ローカルブランチの確認 [git branch -a]
2. ブランチを切り替えて作業する [git checkout]
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]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (func1)
$ git status
On branch func1
Untracked files:
(use "git add
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]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (func1)
$ git add --all
●[git commit]
UserName@ComputerName 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]
UserName@ComputerName 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]
UserName@ComputerName 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]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (func1)
$ git checkout master
Switched to branch 'master'
UserName@ComputerName 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]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git branch --merged
* master
(master)ブランチにマージしたブランチはありませんので、一覧には[* master]のみ表示されます。[--merged]ではなく、[git branch --no-merged]コマンドを実行するとマージされていないブランチを表示する事ができます。
●[git branch --no-merged]
UserName@ComputerName 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]
UserName@ComputerName 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]
UserName@ComputerName 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]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git branch --merged
func1
* master
マージされた(func1)ブランチがリストに表示されます。
●[git branch --merged]
UserName@ComputerName 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 - ブランチを削除する方法