ソフトウェアの開発現場では、同一プロジェクト内のメンバーが同時に複数の機能を追加したり、バージョン管理をすることがあります。 このような平行作業を管理するのに便利な Git(ギット)の「ブランチ」という機能をご紹介しましょう。
目次
1. ブランチとは?
バージョン管理の際に、マスターとする履歴から分岐して記録するための機能を「ブランチ」と言います。 プロジェクト中に追加機能が発生した場合など、本来の開発作業に影響を与えずに同じリポジトリの中で複数の変更を加えたり、追加機能に問題がないことを確認してから、マスター履歴にマージするという事も出来ます。 ブランチの仕組みを説明する前に、まずはGitのデータを格納する仕組みについて確認してみましょう。
「Git-ws」フォルダー内にはfirst commit 後に編集を終え、2回目のコミットが出来る状態(ステージングエリアに登録されたファイルがある状態)です。
●「Git-ws」フォルダー
「git status」コマンドで状態を確認してみましょう。
●[git status]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD
modified: git-sample1.txt
「git-sample1.txt」が編集された状態ですので、この変更をコミットしてみます。
●[git commit]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git commit -m "second commit MSG"
[master 8b17b87] second commit MSG
1 file changed, 3 insertions(+)
コミットすると直近のコミットへのポインターが作成されます。「git log」で履歴を確認してみましょう。
●[git log]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git log
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
git initで初期化をすると、デフォルトブランチの「master」が作成されます。
”UserName@~”から始まるプロンプト行に「(master)」と表示されますが、現在作業のブランチが「(master)」であることを表しています。2番目のコミット(commit 8b17b87)作成時に、一番最初のコミットIDの情報(commit 5ffe5ec~)を保持し、masterブランチも2番目のコミットに進みます。3回目のコミット、それ以降のコミットも同様にポインターの作成とブランチが移動して行くことで履歴の管理をしています。
●(master)ブランチ
同一リポジトリ内で機能の追加をする場合などに現在までの作業内容とは切り離して管理をしたい場合、新たな「ブランチ」を作成する事でマスターの作業内容を続けながら追加機能の作業を進める事ができます。次の章でその方法について確認してみましょう。
2. ブランチを作成する【git branch】
デフォルトのmasterブランチから分岐するには「git branch [ブランチ名]」コマンドを実行します。
●[git branch]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git branch func1
ブランチ作成のメッセージなどは表示されませんが内部できちんと作成されていますので「git log」で確認してみましょう。
●[git log]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git log --oneline --decorate --graph --all
* 8b17b87 (HEAD -> master, func1) second commit MSG
* 5ffe5ec first commit MSG
「8b17b87」のコミット後に新規ブランチの「func1」が作成されたのが分かります。
●(func1)ブランチの作成
新規ブランチを作成しましたが、プロンプトの表示は「(master)」のままです。このまま作業を続けても今までと同じくmasterブランチ上で作業をすることになりますので、新規ブランチへの切り替え作業をする必要があります。
3. ブランチを切り替える【git checkout】
デフォルトのmasterブランチから、新しく作成した「func1」ブランチに切り替えるには「git checkout [ブランチ名]コマンドを実行します。
●[git log]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (master)
$ git checkout func1
Switched to branch 'func1'
UserName@ComputerName MINGW64 ~/Documents/Git-ws (func1)
プロンプトの表示が「(func1)」に変わりました。「git log」で確認してみましょう。
●[git log]
UserName@ComputerName MINGW64 ~/Documents/Git-ws (func1)
$ git log --oneline --decorate --graph --all
* 8b17b87 (HEAD -> func1, master) second commit MSG
* 5ffe5ec first commit MSG
●(func1)ブランチへの切り替え
「HEAD」が「func1ブランチ」を指しています。ブランチを切り替え以降の作業履歴は「(func1)」に記録されます。
【関連文書】
WindowsにGitをインストールする方法
【関連文書】
Git for Windows の使い方 ~準備編~
【関連文書】
Git の使い方 ~リポジトリの作成とコミット~
【関連文書】
Git の使い方 ~リポジトリへ変更内容を記録する方法~
【関連文書】
git add の取り消し方法
【関連文書】
git コマンド ~コミットの取り消し~