5 Git workflows and branching strategy you can use to improve your development process
コンフリクトメッセージを見て、イライラして髪の毛を引っ張らない開発者に会ったことがありません。
適切な Git ワークフローを設定することは、開発ワークフローに大きなメリットをもたらします。
もちろん、正しいGitワークフローがあればすべての問題が解決するわけではありません。 しかし、それは正しい方向への一歩です。
どのように設定するかは、作業しているプロジェクト、チームのリリーススケジュール、チームの規模などによって異なります!
この記事では、5つの異なるgitワークフローについて、その利点と欠点、そしていつ使用すべきかについて説明します。
Basic Git Workflow
最も基本的な git のワークフローは、master ブランチという 1 つのブランチだけが存在するものです。 開発者は master ブランチに直接コミットし、それを使ってステージング環境や本番環境にデプロイします。

このワークフローは、サイドプロジェクトですぐに始めようとしている場合を除き、通常はお勧めできません。
ブランチが1つしかないので、ここにはプロセスがありません。 そのため、Gitを使い始めるのに苦労しません。
- コードの共同作業では、複数のコンフリクトが発生します。
- バグのあるソフトウェアを本番に出荷する可能性が高くなります。
Git Feature Branch Workflow
Git Feature Branch ワークフローは、複数の開発者が同じコードベースで作業している場合に必須となります。 また、別の開発者が2つ目の機能に取り組んでいるとします。 もし両方の開発者が同じブランチで作業し、そこにコミットを追加すると、コードベースはたくさんのコンフリクトが発生する大混乱に陥ります。

これを避けるために、2人の開発者はmasterブランチから2つの別々のブランチを作成し、それぞれの機能について個別に作業することができます。
このワークフローを使用する利点は、git feature branch ワークフローによって、コードの衝突を心配することなくコードを共同で作成できることです。
Git Feature Workflow with Develop Branch
このワークフローは、開発者チームの間で人気のあるワークフローの 1 つです。
このワークフローでは、masterブランチは常に運用可能な状態を反映しています。
このワークフローでは、masterブランチは常に本番環境に対応した状態を反映しており、チームが本番環境にデプロイしたいときはいつでもmasterブランチからデプロイします。 開発者は、developブランチからブランチを作成し、新機能の開発を行います。 機能の準備が整うと、テストが行われ、developブランチにマージされ、先行してマージされていた場合はdevelopブランチのコードでテストされ、masterにマージされます。

このワークフローの利点は、チームが一貫して新機能をマージし、ステージングでテストし、プロダクションにデプロイできることです。
Gitflow ワークフロー
gitflow のワークフローは、これまで説明してきたワークフローに、リリース ブランチとホットフィックス ブランチという 2 つのブランチを組み合わせたものと非常によく似ています。
ホットフィックスブランチ
ホットフィックスブランチは、master ブランチから作成され、development ブランチの代わりに master ブランチに直接マージされる唯一のブランチです。 このブランチは、本番環境の問題に素早くパッチを当てる必要がある場合にのみ使用されます。
修正プログラムが master ブランチにマージされてデプロイされたら、develop ブランチと現在のリリースブランチの両方にマージされます。
リリース ブランチ
リリース ブランチは、develop ブランチがリリースで計画されているすべての機能を正常にマージした後、develop ブランチからフォークされます。 リリースに関連するコードだけがreleaseブランチに追加されます。
このブランチが master にマージされ、本番環境にデプロイされると、develop ブランチにもマージされ、新機能が develop からフォークされたときに、最新のコードが含まれるようになります。

このワークフローはVincent Driessen氏によって最初に発表され人気を博して以来、予定されたリリースサイクルを持つ組織で広く使用されています。
git-flowはGitのラッパーなので、現在使用しているリポジトリにgit-flowをインストールすることができます。 簡単なプロセスで、ブランチを作成する以外には、リポジトリに何も変更を加えません。
Mac マシンにインストールするには、ターミナルで brew install git-flow
を実行します。
Windows マシンにインストールするには、git-flow をダウンロードしてインストールする必要があります。
Git Fork Workflow
Fork ワークフローは、オープン ソース ソフトウェアを使用するチームの間で人気があります。
フローは通常次のようになります。
生産性向上のためのGitワークフローとブランチ戦略の自動化
開発者が常に抱えている問題の一つに、チームメイトを更新するためのプロジェクト管理ツールの更新があります。 そのためZepelでは、開発者がソフトウェアの構築により多くの時間を割けるように、ワークフローを自動化しています。
ここでは、全員が同期を保つために git ワークフローをどのように自動化しているかを紹介します。

ZepelはGitHub、Bitbucket、GitLabと深く統合していますが、私たちは社内でGitHubを使用しています。 そこで、GitHubとZepelを統合した後、開発チームがZepel内でgitワークフローの自動化を設定します。

開発者が進捗を続けていると、私たちのチームには自動的にSlackの通知が届き、その変更がユーザーストーリー内に記録されます。

あなただけのワークフローとGitブランチ戦略を!
この記事で紹介したgitワークフローは、開発チームにとって人気があり、最もよく働くワークフローの一例です。
もしあなたが他のワークフローを使っていて、それがうまく機能しているのであれば、私たち@getzepelにツイートしてください。
Helpful Articles






。