連載
» 2014年01月06日 18時00分 UPDATE

Gitブランチを使いこなすgit-flow/GitHub Flow入門(3):図とコマンドで分かる! git-flowによる開発の流れと使い方 (1/2)

数回にわたってgit-flowとGitHub Flowを使ったGitの活用テクニックを紹介します。今回は、git-flowの代表的なコマンドと、git-flowによるブランチ利用の流れを図とともに紹介します。

[岡本隆史,@IT]

 前回の「git-flowのインストールとブランチ運用前のリポジトリ準備」では、git-flowを利用する共有リポジトリの準備と、各担当者が行う準備の仕方を紹介しました。今回は、実際にgit-flowを利用して開発を行ってみましょう。

git-flowによるブランチ利用の流れ

 git-flowを利用する際は、gitコマンドを利用して次のような書式で実行します。

$ git flow {ブランチ種別} {コマンド}


 ブランチ種別は、連載第1回で紹介した「feature」「release」「hotfix」のいずれかを指定します。コマンドについては、本稿では表1で紹介します。

表1 git flowの代表的なコマンド
コマンド 説明
start ブランチを作成
finish ブランチを終了。ブランチの内容を関連するブランチへマージしブランチを削除
publish ブランチを共有リポジトリで公開
track 他の開発者が作成したブランチを共有リポジトリから取得
pull 共有リポジトリ上のコミットを取得
rebase ブランチ上でリベースを行う

 これらのgit-flow専用コマンドに通常のgitコマンドも利用して運用することになります。

 git-flowによるブランチを使った作業の流れは、ブランチの種類にかかわらず、おおよそ図1のようになります。

gitflow3_1.jpg 図1 git-flowの作業フロー
表2 git-flowの作業フロー(表の左側は解説へのリンクになっています)
作業 説明
【1】ブランチの作業開始 ブランチを作成し、作業を開始する準備
【2】ブランチの共有 【1】で作成したブランチを共有リポジトリで共有
【3】ブランチの取得 共同作業者は、担当者が作成したブランチを取得し、作業を行う
【4】コミットのプッシュ 共同作業者の作業内容を共有リポジトリで共有
【5】コミットの取り込み 共有リポジトリ上の変更をローカルリポジトリへ取り込み
【6】ブランチの作業終了 ブランチでの作業が完了すると、適切なブランチへマージを行い、ブランチを終了

 ブランチでの作業を1人の担当者で行う場合は、【2〜5】の手順は省略可能です。ブランチでの作業が終わったらgit pushを利用して、作業内容を共有リポジトリへプッシュします。

 では、それぞれの手順を見ていきましょう。以下の説明では、最も利用頻度の高いfeatureブランチでの説明を中心に、他のブランチで異なる部分は補足しながら説明していきます。

【1】ブランチ作業の開始

 featureブランチを作成するには、次のコマンドを実行します。

$ git flow feature start {ブランチ名}


 developブランチの先頭からfeatureブランチを作成します。例えば、myfeatブランチを作成して、作業を行う場合、次のようにします。

$ git flow feature start myfeat


 releaseブランチの場合も同様に次のようにして作成できます。

$ git flow release start v1.0


 hotfixブランチについても、同様にして作成できます。

$ git flow hotfix start v1.0.1


 startコマンドによるブランチの作成は、ブランチ種別によって作成元が異なります。featureブランチとreleaseブランチは、developブランチから作成されますが、hotfixブランチは、masterブランチから作成されます。

gitflow3_2.jpg 図2 各ブランチ作成時の分岐元の違い

【2】ブランチの共有

 【1】で作成したブランチを共有リポジトリで共有するには、以下のようにします。

$ git flow {ブランチ種別} publish {ブランチ名}


 例えば、featureブランチを共有する場合は、以下のようにします。

$ git flow feature publish myfeat


 releaseブランチとhotfixブランチも同様です。

【3】ブランチの取得

 ブランチの作業を他の担当者と共同で行う場合、他の担当者はブランチの内容を取得する必要があります。

 通常のGitのgit pullコマンドやgit fetchコマンドを利用してブランチを取得することもできますが、git-flow用のブランチ取得用のコマンドも提供されているので、そちらを使うとよいでしょう。共有リポジトリのブランチを取得するには、次のようにします。

$ git flow {ブランチ種別} track {ブランチ名}


 例えば、featureブランチのmyfeatブランチを取得するには、次のようにします。

$ git flow feature track myfeat


 既にブランチを取り込んでいる場合は、プルでコミットを取り込み 、リベースでブランチを奇麗にします。

$ git flow feature pull

$ git flow feature rebase


 リベースは必須ではありませんが、リベースを行うと奇麗なブランチにすることができます。詳細は下記のコラムをご覧ください。

コラム:リベースで奇麗なブランチを作る

 git-flowではプルを行った場合、他の担当者のコミットをマージコミットを利用して取り込みます。

 マージコミットを利用すると、ブランチの中にさらに細かい枝分かれができ、煩雑になります。奇麗なブランチにしたい場合、リベースを利用します。

gitflow3_3.jpg 図3 プルによるマージ

 担当者Aが共有リポジトリ上の担当者Bのコミットをプルを行った後、リベースを行うと、担当者Aのコミットは、担当者Bの後ろにくるように修正されます。

gitflow3_4.jpg 図4 リベースによるコミットの入れ替え

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。