Git のブランチ

リモートブランチを含む状況については「Git のリモートブランチ」をみてください。 この記事ではローカルリポジトリでの作業について説明しています。

Git のブランチとは?

Git のブランチというのは、開発作業の1本の道筋のことを指します。

ブランチ (branch) は英語で「枝」の意味です。

Git ではデフォルトで master という名前のブランチが作成されます。明示的に他にブランチを作成しない限り、 master ブランチで開発作業をすることになります。

Git を利用した開発では通常、開発の流れをブランチ毎に分けて同時並行で作業を行います。 必要なタイミングで二つのブランチをマージ (merge「合併」の意) することで開発を進めていきます。

Git のブランチのワークフローと名前付け

Git で開発を行う場合の典型的なワークフローを図で示します。線はブランチを表し、丸はコミットを表しています。

Git のワークフロー

コミットからの外向き矢印は、そこでブランチを作成したことを表しています。コミットへ向かう矢印は、そこでブランチをマージしたことを表しています。

master には最新の開発版のソースコードをマージしていきます。

feature-* または bug-* という名前 (* の部分には必要な名称を付ける) のブランチは、master の HEAD からブランチを作成し、個々の機能を実装したり不具合を修正したりします。 作業が終われば master にマージします。

適当なタイミング (テスト作業が完了する、あるいはマーケティング上の戦略的な意味など、任意のタイミング) で、stable ブランチにマージしてリリースします。 リリースした時にタグを作成します。

hotfixes ブランチはリリースした版の緊急の問題を修正するために使います。

Git のブランチの一覧表示

Git のブランチ一覧を表示するには git branch コマンドを使います。

git branch

Git ブランチの作成

Git のブランチを作成する時には、 git branch コマンドを使います。

git branch "ブランチ名"

ブランチ作成時のブランチの HEAD (コミット) から、ブランチが作成されます。

Git のブランチの削除

Git のブランチを削除する場合には、次のコマンドを実行します。

git branch -d “ブランチ名”

Git で現在のブランチを切り替える方法

Git で現在のブランチを切り替える場合には、次のコマンドを実行します。

git checkout “ブランチ名”

変更作業中のファイルに注意

ブランチを切り替えると作業ディレクトリの内容は切り替えた先のブランチの内容で入れ替わります。

この時、変更作業途中でコミットしていないファイルがあると、変更が切り替えた先のブランチに持ち越されてしまいます。 このためキリの良いところでブランチを切り替えるか、スタッシュを作成して変更を取り置いてからブランチを切り替えるのが無難です。

Git ブランチのマージ

現在のブランチに他のブランチをマージするには、次のコマンドを実行します。

git merge “ブランチ名”

ブランチ作成後に、元のブランチにコミットがなかった場合などは、このコマンドで直ちにマージされます。(Fast-Forward)

マージした結果にコンフリクトが発生した場合は、手動でで解消する必要があります。git merge コマンドは単純に Fast Forward できない場合は、マージしたソースコードを生成するだけでコミットしません。

Git ブランチのマージのおすすめ手順

“feature-foo” と “develop” をマージするなら、先に “feature-foo” に “develop” をマージしてコンフリクトを解消する。 それから、”develop” がマージされた版の “feature-foo” を “develop” にマージする。

master 上で feature-fooをマージするための修正をする必要がない

git checkout feature-foo
git merge develop
# コンフリクトがあれば解消 
git commit # Fast-Forward で直ちにマージが完了している可能性ある
git checkout develop
git merge feature-foo

尚、もし develop がリモートリポジトリと紐付いている場合は先に git pull してください。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Git 入門