Articles

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 ブランチに直接コミットし、それを使ってステージング環境や本番環境にデプロイします。

Basic Git Workflow
すべてのコミットが master ブランチに直接追加される基本的な Git ワークフロー

このワークフローは、サイドプロジェクトですぐに始めようとしている場合を除き、通常はお勧めできません。

ブランチが1つしかないので、ここにはプロセスがありません。 そのため、Gitを使い始めるのに苦労しません。

  1. コードの共同作業では、複数のコンフリクトが発生します。
  2. バグのあるソフトウェアを本番に出荷する可能性が高くなります。

Git Feature Branch Workflow

Git Feature Branch ワークフローは、複数の開発者が同じコードベースで作業している場合に必須となります。 また、別の開発者が2つ目の機能に取り組んでいるとします。 もし両方の開発者が同じブランチで作業し、そこにコミットを追加すると、コードベースはたくさんのコンフリクトが発生する大混乱に陥ります。

Git feature branch workflow
Git workflow with feature branches

これを避けるために、2人の開発者はmasterブランチから2つの別々のブランチを作成し、それぞれの機能について個別に作業することができます。

このワークフローを使用する利点は、git feature branch ワークフローによって、コードの衝突を心配することなくコードを共同で作成できることです。

Git Feature Workflow with Develop Branch

このワークフローは、開発者チームの間で人気のあるワークフローの 1 つです。

このワークフローでは、masterブランチは常に運用可能な状態を反映しています。

このワークフローでは、masterブランチは常に本番環境に対応した状態を反映しており、チームが本番環境にデプロイしたいときはいつでもmasterブランチからデプロイします。 開発者は、developブランチからブランチを作成し、新機能の開発を行います。 機能の準備が整うと、テストが行われ、developブランチにマージされ、先行してマージされていた場合はdevelopブランチのコードでテストされ、masterにマージされます。

Git workflow with feature and develop branches
Git workflow with feature and develop branches

このワークフローの利点は、チームが一貫して新機能をマージし、ステージングでテストし、プロダクションにデプロイできることです。

Gitflow ワークフロー

gitflow のワークフローは、これまで説明してきたワークフローに、リリース ブランチとホットフィックス ブランチという 2 つのブランチを組み合わせたものと非常によく似ています。

ホットフィックスブランチ

ホットフィックスブランチは、master ブランチから作成され、development ブランチの代わりに master ブランチに直接マージされる唯一のブランチです。 このブランチは、本番環境の問題に素早くパッチを当てる必要がある場合にのみ使用されます。

修正プログラムが master ブランチにマージされてデプロイされたら、develop ブランチと現在のリリースブランチの両方にマージされます。

リリース ブランチ

リリース ブランチは、develop ブランチがリリースで計画されているすべての機能を正常にマージした後、develop ブランチからフォークされます。 リリースに関連するコードだけがreleaseブランチに追加されます。

このブランチが master にマージされ、本番環境にデプロイされると、develop ブランチにもマージされ、新機能が develop からフォークされたときに、最新のコードが含まれるようになります。

Gitflowワークフロー
hotfixブランチとreleaseブランチを使用したGitflowワークフロー

このワークフローはVincent Driessen氏によって最初に発表され人気を博して以来、予定されたリリースサイクルを持つ組織で広く使用されています。

git-flowはGitのラッパーなので、現在使用しているリポジトリにgit-flowをインストールすることができます。 簡単なプロセスで、ブランチを作成する以外には、リポジトリに何も変更を加えません。

Mac マシンにインストールするには、ターミナルで brew install git-flow を実行します。

Windows マシンにインストールするには、git-flow をダウンロードしてインストールする必要があります。

Git Fork Workflow

Fork ワークフローは、オープン ソース ソフトウェアを使用するチームの間で人気があります。

フローは通常次のようになります。

  • 開発者は自分のアカウントにこのリポジトリのコピーを作成します。
  • 開発者は自分のアカウントからローカル システムにリポジトリをクローンします。
  • 公式リポジトリのリモート パスがローカル システムにクローンされたリポジトリに追加されます。
  • 開発者はローカル システムに新しい機能ブランチを作成し、変更を加えてコミットします。
  • ブランチとともにこれらの変更は、開発者のアカウントのリポジトリのコピーにプッシュされます。
  • ブランチから公式リポジトリへのプルリクエストが開始されます。
  • 公式リポジトリのマネージャーが変更内容を確認し、公式リポジトリへのマージを承認します。
  • 生産性向上のためのGitワークフローとブランチ戦略の自動化

    開発者が常に抱えている問題の一つに、チームメイトを更新するためのプロジェクト管理ツールの更新があります。 そのためZepelでは、開発者がソフトウェアの構築により多くの時間を割けるように、ワークフローを自動化しています。

    ここでは、全員が同期を保つために git ワークフローをどのように自動化しているかを紹介します。

    Developer Workflow with GitHub, Zepel, and Slack Integrations
    GitHub、Zepel、Slackで開発者のワークフローがどのように自動化されているかを示したシンプルなフローチャートです。

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

    Gitワークフローの自動化
    Gitワークフローに基づいてステータスを更新するようにZepelを自動化する。

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

    Gitワークフローがユーザーストーリーをリアルタイムに更新
    すべてのコミット、プルリクエスト、ブランチの変更がリアルタイムに更新されます。

    あなただけのワークフローとGitブランチ戦略を!

    この記事で紹介したgitワークフローは、開発チームにとって人気があり、最もよく働くワークフローの一例です。

    もしあなたが他のワークフローを使っていて、それがうまく機能しているのであれば、私たち@getzepelにツイートしてください。

    development workflow cta button

    Helpful Articles

    Working with Branches: How to Create a Branch in GitHub?
    GitHubのウェブサイト、デスクトップアプリ、ターミナルコマンドを使って、GitHubに新しいブランチを作成する方法をステップバイステップで説明しています。
    Vikash KoushikThe Zepel Blog

    Git Commit: コードの変更をGitHubにコミットするには?
    数時間分のコードが数秒で消えてしまうことを想像してみてください。 😱 この悪夢が現実になるのを防ぐために、コードをGitHubにコミットしましょう。 その方法をご紹介します。
    Ranjali RoyThe Zepel Blog

    GitHubでプルリクエストを作成する方法
    GitHubでプルリクエストを作成し、同じコードベースで楽に共同作業をする方法をご紹介します。
    Ranjali RoyThe Zepel Blog

    コメントを残す

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