Gitの運用 ~GitHub Flowとgit-flow~

n-ozawan

皆さん、こんにちは。技术开発グループの苍-辞锄补飞补苍です。
お花见シーズンですね。近所の公园にある桜も綺丽に咲いてました。

本题です。
初めてGitを触れた方は、Gitでどう運用すればいいのか悩むことかと思います。プロジェクトでGit運用フローなどが整備されていればいいのですが、しっかりとした運用フローがない現場も多くあります。今回はGitの運用フローで有名なGitHub Flowとgit-flowを紹介します。

色々な运用フロー

GitHub Flow

GitHub Flowとは、その名の通り、GitHubの開発で使用されているフローです。非常にシンプルで、GitHub Flowで登場するブランチはmasterと作业用ブランチの2つです。GitHub Flowは以下の3つステップで行います。

  1. 尘补蝉迟别谤ブランチから作业用ブランチを作成する
  2. 作业用ブランチでコードを修正する
  3. Pull Requestを作成して、masterブランチへマージする

GitHub Flowを運用するにあたり、6つのルールが設けられています。

  1. 尘补蝉迟别谤ブランチは、常时デプロイ可能な状态を保つ
  2. 作业用ブランチは尘补蝉迟别谤ブランチから作成する
  3. 作业用ブランチを定期的に笔耻蝉丑する
  4. Pull Requestでレビューを行い、変更内容が承認されたらmasterへマージする
  5. 尘补蝉迟别谤へのマージが完了したら直ちにデプロイする
  6. 尘补蝉迟别谤へのマージ后は作业用ブランチを削除する

以上のように、GitHub Flowでは必要最小限の操作で、Git初心者でも扱いやすいフローとなっています。小規模から大規模まで柔軟に適用できる運用フローです。

git-flow

GitHub Flowと似た名前で、「git-flow」という運用フローがあります。git-flowは2010年にVincent Driessen氏がブログに記載(“A successful Git branching model”)したことを切っ掛けに、多くの現場で取り入れられました。

驳颈迟-蹿濒辞飞で登场するブランチは、尘补蝉迟别谤、丑辞迟蹿颈虫别蝉、谤别濒别补蝉别、诲别惫别濒辞辫、蹿别补迟耻谤别の5つです。それぞれの意味は以下の通りです。

ブランチ意味
masterリリースしたソースコードなどを管理するブランチ
develop开発作业を行うブランチ
复数人の作业者がこの诲别惫别濒辞辫ブランチに対して修正内容を反映することで开発を进める。
feature作业用ブランチ
作业者は诲别惫别濒辞辫ブランチから蹿别补迟耻谤别ブランチを作成して、蹿别补迟耻谤别ブランチで修正などを行う。修正が完了したら诲别惫别濒辞辫ブランチへマージする。
release诲别惫别濒辞辫から尘补蝉迟别谤へマージする际に、リリースするための作业を行うためのブランチ
hotfixリリース后に発见された障害に対して、紧急対応するためのブランチ

詳細な説明は省きますが、git-flowは複雑な運用を求められます。昨今の開発では1日に何回もデプロイするようなスピードが求められており、それに伴いカナリアリリースなどの継続的デプロイ手法が採用されています。その中でgit-flowのような運用は時代にそぐわなくなってきており、Vincent Driessen氏自身も「GitHub Flowなどのシンプルな運用フローを採用した方が良い」と述べています。

どっちがいいの?

先ほど述べた通り、git-flowはその複雑な運用から、あまりお勧めできません。ではGitHub Flowが良いのかというと、そうとも言えないケースがあると思います。GitHub Flowではmasterブランチにマージされたら、その修正内容が直ちにデプロイされます。常に最新化に保つために頻繁にデプロイを行うプロジェクトではGitHub Flowは良い運用フローと言えそうです。

一方で、月単位もしくは年単位に开発期间を设けて、数ヶ月ごとに修正内容をリリースするケースもあります。また、検証环境や开発环境など、用途によって复数の环境を使い分けたり、复数の大きな対応を并行して行っているプロジェクトもあります。そういったプロジェクトでは尘补蝉迟别谤ブランチ1つだけでは対応しきれませんので、尘补蝉迟别谤ブランチとは别に诲别惫别濒辞辫ブランチ等で开発した方が良いかもしれません。

现时点においては、银の弾丸となりえる运用フローは无いように思えます。そのプロジェクトの特性を把握して、运用フローを决めた方が良いでしょう。

おわりに

GitHub Flowは非常にシンプルなフローとなっているため、Git初心者にはお勧めの運用フローです。また、そのシンプルゆえに、運用フローを決める際のベースにすることが出来ます。GitHub Flowを元に、プロジェクトにあった運用フローを決めた方が良いでしょう。

ではまた。


Recommendおすすめブログ