Gitflow Workflowは、継続的なソフトウェア開発やDevOpsの実践を支援するGitワークフローです。 このワークフローは、Vincent Driessen氏がnvieで最初に発表し、人気を博しました。 Gitflowワークフローは、プロジェクトのリリースを中心に設計された厳密なブランチモデルを定義しています。 これにより、大規模なプロジェクトを管理するための堅牢なフレームワークを提供します。
Gitflowは、スケジュールされたリリースサイクルを持つプロジェクトや、DevOpsのベストプラクティスである継続的な配信に理想的に適しています。
このワークフローでは、Feature Branchワークフローで必要とされる以上の新しい概念やコマンドは追加されません。 その代わり、異なるブランチに非常に具体的な役割を割り当て、それらがいつ、どのように相互作用するかを定義します。 feature
ブランチに加えて、個々のブランチをリリースの準備、維持、記録のために使用します。
Getting Started
Gitflow は、Git ワークフローの抽象的なアイデアに過ぎません。 つまり、どのような種類のブランチを設定し、それらをどのようにマージするかを指示するものです。 ブランチの目的については以下で触れます。 git-flow ツールセットは実際のコマンドラインツールであり、インストール作業が必要です。 git-flow のインストール方法は簡単です。 git-flow のパッケージは複数の OS で提供されています。 OSX システムでは、brew install git-flow
を実行することができます。 Windowsでは、git-flowをダウンロードしてインストールする必要があります。 git-flowをインストールしたら、git flow init
を実行することで、プロジェクトで使用することができます。 Git-flow は、Git のラッパーです。 git flow init
git init
コマンドを拡張したもので、あなたのためにブランチを作成する以外には、あなたのリポジトリに何も変更を加えません。
動作説明
開発ブランチとマスターブランチ
単一の master
master
develop
ブランチは機能の統合ブランチとして機能します。
最初のステップは、デフォルトの master
develop
develop
ブランチを作成し、それをサーバーにプッシュすることです
git branch develop
git push -u origin develop
このブランチにはプロジェクトの完全な履歴が含まれ、一方 master
develop.
git-flow 拡張ライブラリを使用している場合、既存のリポジトリで git flow init
develop
ブランチが作成されます。
$ git flow init
Initialized empty Git repository in ~/project/.git/
No branches exist yet. Base branches must be created now.
Branch name for production releases:
Branch name for "next release" development:
How to name your supporting branch prefixes?
Feature branches?
Release branches?
Hotfix branches?
Support branches?
Version tag prefix?
$ git branch
* develop
master
機能ブランチ
各新機能は独自のブランチに存在すべきで、バックアップやコラボレーションのためにセントラル リポジトリにプッシュすることができます。 しかし、master
feature
develop
を親ブランチとして使用します。 機能が完了すると、developにマージされます。
feature
develop
ブランチを組み合わせたものは、どこから見てもフィーチャーブランチワークフローです。
Feature
develop
ブランチに合わせて作成されます。
feature branchの作成
git-flow extensionsを使用しない場合:
git checkout develop
git checkout -b feature_branch
git-flow extensionを使用する場合:
git flow feature start feature_branch
作業を続けて、通常通りGitを使用します。
機能ブランチの仕上げ
機能の開発作業が終わったら、次のステップは feature_branch
develop
にマージすることです。
git-flow extensions を使用しない場合:
git checkout develop
git merge feature_branch
git-flow extensions を使用する場合。
git flow feature finish feature_branch
リリースブランチ
develop
develop
release
release
master
にマージされ、バージョン番号のタグが付けられます。
リリースの準備のために専用のブランチを使用することで、あるチームが現在のリリースに磨きをかけている間に、別のチームが次のリリースに向けた機能の作業を続けることが可能になります。
release
feature
release
develop
release
ブランチは、以下の方法で作成できます。
git-flow extensionsを使用しない場合:
git checkout develop
git checkout -b release/0.1.0
git-flow extensionsを使用する場合。
$ git flow release start 0.1.0
Switched to a new branch 'release/0.1.0'
リリースの出荷準備が整うと、master
develop
release
release
develop
にマージして戻すことが重要です。 もしあなたの組織がコード レビューを重視しているなら、ここはプル リクエストの理想的な場所になるでしょう。
release
ブランチを終了するには、次の方法を使用します。
git-flow 拡張機能を使用しない場合:
git checkout master
git merge release/0.1.0
または git-flow 拡張機能を使用する場合。
git flow release finish '0.1.0'
Hotfix Branches
メンテナンスブランチまたは "hotfix”
Hotfix
release
feature
develop
master
master
master
develop
release
master
には更新されたバージョン番号をタグ付けします。
バグ修正のための専用の開発ラインを用意することで、チームは残りのワークフローを中断したり、次のリリースサイクルを待ったりすることなく、問題に対処することができます。 メンテナンス ブランチは、release
master
hotfix
ブランチは以下の方法で作成することができます:
git-flow extensions を使用しない場合:
git checkout master
git checkout -b hotfix_branch
git-flow extensions を使用する場合。
$ git flow hotfix start hotfix_branch
release
hotfix
master
develop.
git checkout master
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch
$ git flow hotfix finish hotfix_branch
例
Feature Branch Flowを実証する完全な例は以下の通りです。 master
のブランチを持つレポが設定されているとします。
git checkout master
git checkout -b develop
git checkout -b feature_branch
# work happens on feature branch
git checkout develop
git merge feature_branch
git checkout master
git merge develop
git branch -d feature_branch
feature
release
hotfix
の例は以下のとおりです。
git checkout master
git checkout -b hotfix_branch
# work is done commits are added to the hotfix_branch
git checkout develop
git merge hotfix_branch
git checkout master
git merge hotfix_branch
まとめ
ここでは、Gitflowワークフローについて説明しました。
Gitflowについて知っておくべきいくつかの重要なポイントは以下の通りです:
- このワークフローは、リリースベースのソフトウェアワークフローに最適です。
- Gitflowは、ホットフィックスからプロダクションまでの専用チャネルを提供します。
Gitflowの全体的な流れを説明します。
- A
develop
branch is created frommaster
- A
release
branch is created fromdevelop
-
Feature
develop
から作成されます -
feature
develop
ブランチにマージされます -
release
develop
ブランチにマージされます。release
ブランチが完了すると、develop
master
にマージされます master
hotfix
hotfix
master
から作成されます-
hotfix
develop
master
の両方にマージされます
次へ。 Forking Workflowについて、またはワークフローの比較ページをご覧ください。