Github Flow とは
複数人で開発するときに、github上のリポジトリをどう運用するかをまとめたもの
Github Flow 運用ルール
masterブランチのものはデプロイ可能である
- 全ての作業はmasterブランチにマージする
- (git-flowではdevelopブランチを利用するが、Github Flowではより簡単にしている)
- マージするブランチはテスト、レビューされ、masterブランチは常に安定して動作するように保つ
masterブランチから各種作業を行うブランチを作成する
- 全てのブランチはmasterブランチから作成する
- (git-flowではfeatureブランチとreleaseブランチはdevelopブランチから、hotfixブランチはmasterブランチから作成する)
- ブランチの名前は、一目見てその作業が分かるような名前を付ける
ブランチを定期的にプッシュする
- 作業用のブランチは定期的にプッシュして、他の担当者に作業状況を共有する
- 不意の端末の故障からソースコードを守る
- (git-flowでは、ブランチでの作業をローカルで行いdevelopブランチやmasterブランチへマージした後、共有リポジトリへプッシュする)
プルリクエストを利用してレビューを行う
- Githubのプルリクエストの機能を利用してレビューを行なってから、masterブランチにマージする
マージされたプルリクエストを直ちにデプロイする
- マージされたmasterブランチのコードはすぐにデプロイする
- 早期にデプロイし動作確認を行うことで、バグを早期に発見、修正する
- 本番環境にいきなりデプロイするのがためらわれる場合、ステージング環境にデプロイして動作確認を行う
Git Flowの流れ
作業用のブランチ作成
- masterブランチから作業用のブランチを作成
- git checkout -b new-festで作成と切り替えを同時に行う
$ git checkout -b new-feat
$ git branch
ブランチのプッシュ
- ブランチをリモートリポジトリへプッシュ
- 他の開発者と作業内容を共有
$ git push origin new-feat
プルリクエスト
-
ブランチでの作業が完了したら、プルリクエストを作成
-
作業ブランチを元のブランチへマージする依頼を送信
-
GithubのWebサイト
-
Pull Requests -> New pull request -> Create Pull Request
レビュー
- レビュアーはプルリクエストをレビュー
- レビューコメントを追加
修正
- レビュアーのコメントを受けて、修正した変更をプッシュ
- プルリクエストに反映
masterブランチにマージ
- レビュアーから承認を受けたら、作業ブランチをmasterブランチにマージ
$ git checkout master
$ git merge --no-ff new-feat
作業ブランチの確認
$ git branch -r
作業ブランチの作成
$ git branch new-feat
作業ブランチの切り替え
$ git checkout new-feat
作業ブランチの削除
$ git branch -d new-feat
参考
Gitチュートリアル | Atlassian
プルリクエスト/レビューを取り込んだ、よりシンプルなGitHub Flowの運用を図解する (1/2) | @IT
Github-flowを分かりやすく図解してみた | pyar.bz
Github Flow (Japanese translation) | GithubGist