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 initgit initコマンドを拡張したもので、あなたのためにブランチを作成する以外には、あなたのリポジトリに何も変更を加えません。

動作説明

開発ブランチとマスターブランチ

単一の mastermasterdevelopブランチは機能の統合ブランチとして機能します。

最初のステップは、デフォルトの masterdevelopdevelop ブランチを作成し、それをサーバーにプッシュすることです

git branch develop
git push -u origin develop

このブランチにはプロジェクトの完全な履歴が含まれ、一方 masterdevelop.

git-flow 拡張ライブラリを使用している場合、既存のリポジトリで git flow initdevelop ブランチが作成されます。

$ 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

機能ブランチ

各新機能は独自のブランチに存在すべきで、バックアップやコラボレーションのためにセントラル リポジトリにプッシュすることができます。 しかし、masterfeaturedevelopを親ブランチとして使用します。 機能が完了すると、developにマージされます。

featuredevelop ブランチを組み合わせたものは、どこから見てもフィーチャーブランチワークフローです。

Featuredevelop ブランチに合わせて作成されます。

feature branchの作成

git-flow extensionsを使用しない場合:

git checkout develop
git checkout -b feature_branch

git-flow extensionを使用する場合:

git flow feature start feature_branch

作業を続けて、通常通りGitを使用します。

機能ブランチの仕上げ

機能の開発作業が終わったら、次のステップは feature_branchdevelop にマージすることです。

git-flow extensions を使用しない場合:

git checkout develop
git merge feature_branch

git-flow extensions を使用する場合。

git flow feature finish feature_branch

リリースブランチ

developdevelopreleasereleasemasterにマージされ、バージョン番号のタグが付けられます。

リリースの準備のために専用のブランチを使用することで、あるチームが現在のリリースに磨きをかけている間に、別のチームが次のリリースに向けた機能の作業を続けることが可能になります。

releasefeaturereleasedevelopreleaseブランチは、以下の方法で作成できます。

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'

リリースの出荷準備が整うと、masterdevelopreleasereleasedevelop にマージして戻すことが重要です。 もしあなたの組織がコード レビューを重視しているなら、ここはプル リクエストの理想的な場所になるでしょう。

release ブランチを終了するには、次の方法を使用します。

git-flow 拡張機能を使用しない場合:

git checkout master 
git merge release/0.1.0

または git-flow 拡張機能を使用する場合。

git flow release finish '0.1.0'

Hotfix Branches

メンテナンスブランチまたは "hotfix”Hotfixreleasefeaturedevelopmastermastermasterdevelopreleasemaster には更新されたバージョン番号をタグ付けします。

バグ修正のための専用の開発ラインを用意することで、チームは残りのワークフローを中断したり、次のリリースサイクルを待ったりすることなく、問題に対処することができます。 メンテナンス ブランチは、releasemasterhotfixブランチは以下の方法で作成することができます:

git-flow extensions を使用しない場合:

git checkout master
git checkout -b hotfix_branch

git-flow extensions を使用する場合。

$ git flow hotfix start hotfix_branch

releasehotfixmasterdevelop.

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

featurereleasehotfixの例は以下のとおりです。

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の全体的な流れを説明します。

  1. A develop branch is created from master
  2. A release branch is created from develop
  3. Featuredevelopから作成されます
  4. featuredevelopブランチにマージされます
  5. releasedevelopブランチにマージされます。releaseブランチが完了すると、developmasterにマージされます
  6. masterhotfixhotfixmasterから作成されます
  7. hotfixdevelopmasterの両方にマージされます

次へ。 Forking Workflowについて、またはワークフローの比較ページをご覧ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です