Gitでバージョン管理をするとき、Git Flowという運用ルールを利用すると開発がやりやすいとのことなのでちょっと試してみました。Git Flowは次のブランチ構成で開発していくとのことです。
- developブランチ
- featureブランチ
- releaseブランチ
- masterブランチ
developブランチ
作業用のブランチ。このブランチには直接コミットはしない。featureブランチの作業結果をマージする形で利用する。
featureブランチ
作業用のブランチ。1タスク毎に作成して利用するブランチ。このブランチで開発 / コミットを行い、完了後はdevelopブランチにマージする。
releaseブランチ
公開準備用のブランチ。developブランチの作業結果をマージして利用する。
masterブランチ
公開されているバージョンを管理するためのブランチ。
Git Flowのブランチ構成はたぶんこんな感じ。開発者がコミットするのは、featureブランチだけです。
はじめに
Bitbucketなどのリポジトリにプロジェクトファイルをコミット、プッシュしているところから進めます。
Git Flowの準備
メニュー→リポジトリ→Git FlowのところからGit Flowリポジトリの初期化を行います。
初期化はデフォルト設定で進めます。
OKボタンをクリックすると初期化完了です。新しくdevelopブランチが追加されました。
featureブランチの作成
作業を行うためのfeatureブランチを作成します。初期化と同じところに作成メニューが用意されています。
フューチャー名を指定してOKボタンをクリックすれば作成できます。
補足
フューチャー名(というよりブランチ名)は英語で指定します。日本語で指定して進めていた所、作業後にマージするタイミングでエラーになってしまいました。。。
featureブランチで作業を行います。
作業結果をコミットします。
とうぜんですが、この時点での変更は、masterブランチやdevelopブランチには反映されていません。
developブランチにマージ
featureブランチの作業結果をdevelopブランチに反映させます。通常は右クリックメニューなどからマージ操作を行いますが、GitFlowの場合は専用の操作が用意されています。
フューチャーを終了という操作です。
この操作を行うとdevelopブランチへのマージと不要になったfeatureブランチの削除を同時に行うことができます。
これで作業結果がdevelopブランチに反映され、featureブランチの削除も終わりました。
featureブランチはタスク毎に作成するので、別タスクを進めるときは新たに作成します。
作業完了後に先程の手順でマージ。・・・こんな感じで開発を進めていきます。
releaseブランチの作成
開発完了後は、releaseブランチを用意してdevelopブランチの内容を反映させます。メニューにある新規リリースを使います。
作成時にはリリースバージョンを指定します。
これでリリースブランチの準備ができました。
リリースブランチで最終チェックを行い、リリース作業を実施します。
リリースの実施
メニューにあるリリースを完了を選択します。
ブランチを削除にチェックがついていることを確認してOKボタンをクリック
これでmasterブランチにマージされました。
最後にリモートブランチのリポジトリにプッシュして完了です。
GitFlowをつかった開発の流れはだいたいこんな感じになっているみたいです。この方法なら過去リリース時のログもきれいに残すことができますし、作業ブランチはfeatureフォルダにまとめられるので管理もしやすそうです。
GitFlowを利用するときは、masterブランチなどを直接編集しないように注意が必要です。BitBucketリポジトリのREADEME.mdの誤字を直接修正...といううっかりミスをやりそうになりました。