数回にわたってgit-flowとGitHub Flowを使ったGitの活用テクニックを紹介します。今回は、git-flowの代表的なコマンドと、git-flowによるブランチ利用の流れを図とともに紹介します。
前回の「git-flowのインストールとブランチ運用前のリポジトリ準備」では、git-flowを利用する共有リポジトリの準備と、各担当者が行う準備の仕方を紹介しました。今回は、実際にgit-flowを利用して開発を行ってみましょう。
git-flowを利用する際は、gitコマンドを利用して次のような書式で実行します。
$ git flow {ブランチ種別} {コマンド}
ブランチ種別は、連載第1回で紹介した「feature」「release」「hotfix」のいずれかを指定します。コマンドについては、本稿では表1で紹介します。
コマンド | 説明 |
---|---|
start | ブランチを作成 |
finish | ブランチを終了。ブランチの内容を関連するブランチへマージしブランチを削除 |
publish | ブランチを共有リポジトリで公開 |
track | 他の開発者が作成したブランチを共有リポジトリから取得 |
pull | 共有リポジトリ上のコミットを取得 |
rebase | ブランチ上でリベースを行う |
これらのgit-flow専用コマンドに通常のgitコマンドも利用して運用することになります。
git-flowによるブランチを使った作業の流れは、ブランチの種類にかかわらず、おおよそ図1のようになります。
作業 | 説明 |
---|---|
【1】ブランチの作業開始 | ブランチを作成し、作業を開始する準備 |
【2】ブランチの共有 | 【1】で作成したブランチを共有リポジトリで共有 |
【3】ブランチの取得 | 共同作業者は、担当者が作成したブランチを取得し、作業を行う |
【4】コミットのプッシュ | 共同作業者の作業内容を共有リポジトリで共有 |
【5】コミットの取り込み | 共有リポジトリ上の変更をローカルリポジトリへ取り込み |
【6】ブランチの作業終了 | ブランチでの作業が完了すると、適切なブランチへマージを行い、ブランチを終了 |
ブランチでの作業を1人の担当者で行う場合は、【2〜5】の手順は省略可能です。ブランチでの作業が終わったらgit pushを利用して、作業内容を共有リポジトリへプッシュします。
では、それぞれの手順を見ていきましょう。以下の説明では、最も利用頻度の高いfeatureブランチでの説明を中心に、他のブランチで異なる部分は補足しながら説明していきます。
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ブランチから作成されます。
【1】で作成したブランチを共有リポジトリで共有するには、以下のようにします。
$ git flow {ブランチ種別} publish {ブランチ名}
例えば、featureブランチを共有する場合は、以下のようにします。
$ git flow feature publish myfeat
releaseブランチとhotfixブランチも同様です。
ブランチの作業を他の担当者と共同で行う場合、他の担当者はブランチの内容を取得する必要があります。
通常の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ではプルを行った場合、他の担当者のコミットをマージコミットを利用して取り込みます。
マージコミットを利用すると、ブランチの中にさらに細かい枝分かれができ、煩雑になります。奇麗なブランチにしたい場合、リベースを利用します。
担当者Aが共有リポジトリ上の担当者Bのコミットをプルを行った後、リベースを行うと、担当者Aのコミットは、担当者Bの後ろにくるように修正されます。
Copyright © ITmedia, Inc. All Rights Reserved.