【Git-Flow+PR】プロジェクトをGit-Flowに移行してみた。
前書き
最近、Github
で管理している既存リポジトリのワークフローをGit-Flow
に移行しました。今までなんちゃってGithub-Flow
で運用していたのですが、ステージング環境の構築に伴い、ワークフローの見直しをすることになりました。そこで、Git-Flow
を採用することになったので、軽くまとめておきたいと思います。
ちなみに、今回は、Git-Flow
にPR(レビュー)を取り入れたフローを想定しています。
Git-Flowについて
最初にGit-Flow
の概要について解説していきます。
ブランチの種類
Git-Flow
では下記のブランチが使われます。
main
develop
feature
hotfixes
release
main
プロダクトとしてリリースするためのブランチです。
それぞれのコミットにTagをつけて運用します。
develop
開発用のブランチです。リリース準備ができたらdevelop
ブランチをrelease
ブランチを介してmain
ブランチにマージします。
feature
機能の追加等、実際の開発を行うブランチです。develop
ブランチから切って作業し、develop
ブランチにマージします。
hotfixes
現在のプロダクトに対するクリティカルな修正を行うブランチです。なので、main
からブランチを切り、main
にマージしてタグ付けした後、develop
ブランチにマージします。
release
プロダクトリリースの準備をするブランチ。リリースに関連が強い作業はこのブランチで行います。作業が完了したら、develop
とmain
ブランチにマージして、タグ(バージョンの)をつけます。
タグに関しては、main
にマージするタイミングでタグ付けを行う、と覚えておけばよきかと思います。
以降から Git-Flow
の設定と実際の開発フローを解説していこう思います。
【Git-Flowの初期設定】
最初にGit-Flow
の初期設定を行なっていきます。
(1)developブランチの作成
先にmain
からdevelop
ブランチを作成しておきます。
# mainブランチにいるか確認する
$ git branch
*main
# developの作成
$ git switch -c develop
# リモートにdevelopを登録
$ git push origin develop
(2)Githubでbaseブランチを変更
この変更は任意です。
今回のフローでは、PRを出してレビューをしてもらうフローを組み込みます。しかしデフォルトではPRを出すと、main
ブランチにマージしようとしてしまいます。いちいち手動で変えるのも面倒くさいので、github
の設定を変更してしまいましょう。
Githubのプロジェクトを開く→Settings
→Branches
を開いてください。
次に下記の赤枠のボタンを押してください。
そしたらモーダルが出てくると思います。main
ブランチが選択されているので、develop
を選択し、update
ボタンを押してください。
そしたら下記のスクショのような画面が出てくると思うので、ボタンをクリックしてください。
これで、PRを出したらデフォルトでdevelop
がマージの指定先として選択されている状態になります。
git flow init
(3)下記のコマンドでGit-Flow
の初期設定をすることができます。質問を色々されるのですが、全てEnter
で問題ないと思います。
$ git flow init
*環境ごとにbrew install git-flow
等でインストールが必要です。
設定は以上です!以降から実際の開発フローについて解説していきます。
【通常の開発フロー】
では、通常の開発フローを解説しています。
feature
ブランチを作成する
(1)$ git flow feature start hoge
$ git branch
* feature/hoge
main
develop
git flow feature start [ブランチ名]
とコマンドを実行することで、feature/ブランチ名
というブランチ名が作成されます。
このブランチで実際の作業を行います。
ちなみに、git switch -c feature/hoge
のように直接ブランチを切っても大丈夫です。(多分。。。筆者の手元では問題なく動きました。)
add
,commit
,push
する
(2)作業が完了してadd
してcommit
したらpush
してPRを出します。
$ git push origin feature/hoge
(3)レビュー,マージ
Github
上でレビューをもらったら、develop
ブランチにマージしてください。
【プロダクトをリリースする】
では、main
ブランチにマージしてプロダクトをリリースしていきたいと思います。
release
ブランチの作成
(1)$ git flow release start 1.0.0
上記のコマンドでdevelop
ブランチからrelease
ブランチを作成してくれます。
(2)リリース作業
release
ブランチでリリース作業や、そこで見つかったバグなどを修正します。修正したら、main
とdevelop
ブランチにマージしていきます。今回はレビューをしてもらう想定なので、release
ブランチをpush
してPRを出します。
$ git push origin release/1.0.0
main
にマージしたら、タグ付けをしてバージョンを記録しましょう。
# タグ付け
$ git tag -a v1.0.0 -m first-release
# リモートにタグを反映
$ git push origin v1.0.0
main
にマージが完了したら、develop
ブランチにrelease
ブランチをマージして最新の状態反映させておきましょう。
【緊急対応】
リリース済みなプロダクトに対して、緊急のバグ対応が必要になった場合は、main
ブランチからhotfix
ブランチを作成して対応します。
その流れを解説していきます。
main
ブランチからhotfix
を切る
(1)$ git flow hotfix start [ブランチ名]
上記のコマンドでhotfix
がブランチを作成することができます。
main
にマージ,タグ付け
(2)修正作業が完了したら、下記のコマンドでPRを出し、レビューをもらってmain
にマージします。
$ git push origin hotfix/[ブランチ名]
マージが完了したらタグ付けして、リモートに反映させましょう。
# タグ付け
$ git tag -a v1.0.1 -m hotfix
# リモートにタグを反映
$ git push origin v1.0.1
develop
ブランチにマージ
(3)main
にマージが完了したら、develop
ブランチにマージをして変更を反映させてください。
Git-Flowの基本的なところは以上です。お疲れ様でした🙇♂️
Discussion