tyoshikawa1106のブログ

- Force.com Developer Blog -

SourceTree:Git Flowを試してみました

Gitでバージョン管理をするとき、Git Flowという運用ルールを利用すると開発がやりやすいとのことなのでちょっと試してみました。Git Flowは次のブランチ構成で開発していくとのことです。

  • developブランチ
  • featureブランチ
  • releaseブランチ
  • masterブランチ
developブランチ

作業用のブランチ。このブランチには直接コミットはしない。featureブランチの作業結果をマージする形で利用する。

featureブランチ

作業用のブランチ。1タスク毎に作成して利用するブランチ。このブランチで開発 / コミットを行い、完了後はdevelopブランチにマージする。

releaseブランチ

公開準備用のブランチ。developブランチの作業結果をマージして利用する。

masterブランチ

公開されているバージョンを管理するためのブランチ。


Git Flowのブランチ構成はたぶんこんな感じ。開発者がコミットするのは、featureブランチだけです。

はじめに

Bitbucketなどのリポジトリにプロジェクトファイルをコミット、プッシュしているところから進めます。
f:id:tyoshikawa1106:20160519134603p:plain

Git Flowの準備

メニュー→リポジトリ→Git FlowのところからGit Flowリポジトリの初期化を行います。
f:id:tyoshikawa1106:20160519134310p:plain


初期化はデフォルト設定で進めます。
f:id:tyoshikawa1106:20160519134403p:plain


OKボタンをクリックすると初期化完了です。新しくdevelopブランチが追加されました。
f:id:tyoshikawa1106:20160519134744p:plain

featureブランチの作成

作業を行うためのfeatureブランチを作成します。初期化と同じところに作成メニューが用意されています。
f:id:tyoshikawa1106:20160519135943p:plain


フューチャー名を指定してOKボタンをクリックすれば作成できます。
f:id:tyoshikawa1106:20160519143439p:plain

補足

フューチャー名(というよりブランチ名)は英語で指定します。日本語で指定して進めていた所、作業後にマージするタイミングでエラーになってしまいました。。。
f:id:tyoshikawa1106:20160519141845p:plain


featureブランチで作業を行います。
f:id:tyoshikawa1106:20160519140813p:plain


作業結果をコミットします。
f:id:tyoshikawa1106:20160519144032p:plain


とうぜんですが、この時点での変更は、masterブランチやdevelopブランチには反映されていません。

developブランチにマージ

featureブランチの作業結果をdevelopブランチに反映させます。通常は右クリックメニューなどからマージ操作を行いますが、GitFlowの場合は専用の操作が用意されています。


フューチャーを終了という操作です。
f:id:tyoshikawa1106:20160519144140p:plain


この操作を行うとdevelopブランチへのマージと不要になったfeatureブランチの削除を同時に行うことができます。
f:id:tyoshikawa1106:20160519144223p:plain


これで作業結果がdevelopブランチに反映され、featureブランチの削除も終わりました。
f:id:tyoshikawa1106:20160519144319p:plain


featureブランチはタスク毎に作成するので、別タスクを進めるときは新たに作成します。
f:id:tyoshikawa1106:20160519144522p:plain


作業完了後に先程の手順でマージ。・・・こんな感じで開発を進めていきます。
f:id:tyoshikawa1106:20160519144807p:plain

releaseブランチの作成

開発完了後は、releaseブランチを用意してdevelopブランチの内容を反映させます。メニューにある新規リリースを使います。
f:id:tyoshikawa1106:20160519145143p:plain


作成時にはリリースバージョンを指定します。
f:id:tyoshikawa1106:20160519145239p:plain


これでリリースブランチの準備ができました。
f:id:tyoshikawa1106:20160519145315p:plain


リリースブランチで最終チェックを行い、リリース作業を実施します。

リリースの実施

メニューにあるリリースを完了を選択します。
f:id:tyoshikawa1106:20160519145514p:plain


ブランチを削除にチェックがついていることを確認してOKボタンをクリック
f:id:tyoshikawa1106:20160519145635p:plain


これでmasterブランチにマージされました。
f:id:tyoshikawa1106:20160519145801p:plain


最後にリモートブランチのリポジトリにプッシュして完了です。
f:id:tyoshikawa1106:20160519145901p:plain


GitFlowをつかった開発の流れはだいたいこんな感じになっているみたいです。この方法なら過去リリース時のログもきれいに残すことができますし、作業ブランチはfeatureフォルダにまとめられるので管理もしやすそうです。


GitFlowを利用するときは、masterブランチなどを直接編集しないように注意が必要です。BitBucketリポジトリのREADEME.mdの誤字を直接修正...といううっかりミスをやりそうになりました。