業務ではじめてGitHub Flowを使った開発を行ったので、その流れをメモしておきます。
GitHub Flowとは?
masterブランチのものは何であれデプロイ可能である- 新しい何かに取り組む際は、説明的な名前のブランチをmasterから作成する(例:
new-oauth2-scopes)- 作成したブランチにローカルでコミットし、サーバー上の同じ名前のブランチにも定期的に作業内容をpushする
- フィードバックや助言が欲しい時、ブランチをマージしてもよいと思ったときは、プルリクエストを作成する
- 他の誰かがレビューをして機能にOKを出してくれたら、あなたはコードを
masterへマージすることができる- マージをして
masterへpushしたら、直ちにデプロイをする
GitHub Flowはシンプルでわかりやすい開発フローです。GitHub社ではこのGitHub Flowを導入しており、1日に何度も本番環境にデプロイしているようです。定期的にデプロイするチームに向いている開発フローですね。
masterブランチ上で開発を行うのではなく、新たにブランチを作成し、そのブランチ上でコミット、pushを行います。そして、プルリクエストを作成し、レビューをしてもらってOKが出れば、masterブランチに開発用ブランチをマージする、というのがGitHub Flowで開発するときの流れです。
言葉だけだとイメージしづらい部分もあるかと思うので、ここからは実際にGitHub Flowの流れを体験してみます(「直ちにデプロイする」の箇所は今回の体験では行いません)。
GitHub Flowを体験してみよう
リモートリポジトリをチームで共有して開発する場合のGitHub Flowの流れは以下のとおりです。それぞれの手順を実践してみます。
- リポジトリを作成する
- リモートリポジトリからcloneする
- ブランチを作成し、pushする
- プルリクエストを作成する
- マージする
1. リポジトリを作成する

GitHubのCreate a New Repositoryページにアクセスします。上記画像を参考に、リポジトリを作成しましょう。今回作成するリポジトリはgithub-flow-practiceとします。
2. リモートリポジトリからcloneする

リポジトリを作成したら、クローン用のURLをコピーします。その後、以下コマンドでリポジトリをクローンします。
3. ブランチを作成し、pushする
以下コマンドでブランチ作成〜pushまでを行います。
4. プルリクエストを作成する

GitHub上で作成したリポジトリの画面から、「Compare & pull request」ボタンを選択し、プルリクエストを作成していきます。

プルリクエストを発行する前に、変更内容を確認したり、第三者から見てわかるように記述したりしましょう。準備が整えば、「Create pull request」ボタンを選択し、プルリクエストを発行します。
5. マージする

プルリクエストを発行後、リポジトリ管理者にてレビューしてもらい、変更内容に問題がなければマージを行います。今回は自分がリポジトリ管理者の立場となって、レビュー&マージを行います。
マージするためには「Merge pull request」ボタンを選択します。変更内容に問題があれば開発者にコメントを残すこともできますよ。

「Confirm merge」ボタンを選択すればマージ完了です!

マージ済みのブランチ(mod-readme)は不要なので削除します。「Delete branch」ボタンを選択します。

masterブランチに変更内容が反映されました!
GitHub Flowで開発するときの流れが体験できましたね。
まとめ
GitHub Flowで開発するときの流れを改めてまとめてみます。
- リポジトリを作成する
- リモートリポジトリからcloneする
- ブランチを作成し、pushする
- プルリクエストを作成する
- マージする
実際に手を動かしてみると理解が深まるので、ぜひGitHub Flowの流れを実践してみてはいかがでしょうか。