Git Flow と GitHub Flow
Git Flow とは Git を使った開発を行う時の、有効なブランチの切り方です。
- まず、中心となる master ブランチがあります。こちらがリリースされるものとなります。
- 続いて、普段開発を行う際に中心となるのが develop ブランチです。
- develop ブランチから複数の feature ブランチが切られ、それぞれの機能が実装されます。実行が完了すると develop ブランチにマージされます。
- リリースを行う際にはまず develop ブランチから release ブランチが切られます。ここではリリースのためのバグの修正のみ行われます。バグの修正が完了すると、 master ブランチと develop ブランチにマージされます。
- リリースから次のリリースまでの期間に緊急を要するバグ対応がある場合には、 master ブランチから直接 hotfix ブランチを切って対応します。バグ対応が完了すると、 master ブランチと develop ブランチにマージされます。

GitHub Flow
GitHub flow とは GitHub のプルリクエスト機能を使うことを前提とした Git flow を簡略化したものです。
- master ブランチから作業内容を表す名前のブランチ(トピックブランチ)を切って開発(機能追加・バグフィックス)
- 開発が完了したらトピックブランチに push し、 master ブランチに対してプルリクエストを出す
- コードレビューの内容に応じて、問題がなければ master ブランチにマージする。(問題があれば修正して再度pull request )

GitHub flowのメリット
- プルリクエストを利用することによって、 Git flow よりもシンプルで覚えやすくなっています。
- ブランチの派生が起こらないため、複数のブランチにマージすることがなくなり、マージし忘れることなども減ります。
- プルリクエストの過程の中にコードレビューが組み込まれています。
- master ブランチの内容は常にリリース可能なものとなります。
GitHub Flowのデメリット
- トピックブランチへの適切な命名が必要です。
- 即リリースのための簡略化なので、アプリ開発などの、即リリースすることが不可能なケースには不適切です。