🌐

【Git-Flow+PR】プロジェクトをGit-Flowに移行してみた。

2021/03/17に公開

前書き

最近、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

プロダクトリリースの準備をするブランチ。リリースに関連が強い作業はこのブランチで行います。作業が完了したら、developmainブランチにマージして、タグ(バージョンの)をつけます。

タグに関しては、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のプロジェクトを開く→SettingsBranchesを開いてください。

次に下記の赤枠のボタンを押してください。

そしたらモーダルが出てくると思います。mainブランチが選択されているので、developを選択し、updateボタンを押してください。

そしたら下記のスクショのような画面が出てくると思うので、ボタンをクリックしてください。

これで、PRを出したらデフォルトでdevelopがマージの指定先として選択されている状態になります。

(3)git flow init

下記のコマンドでGit-Flowの初期設定をすることができます。質問を色々されるのですが、全てEnterで問題ないと思います。

ターミナル
$ git flow init

*環境ごとにbrew install git-flow等でインストールが必要です。

設定は以上です!以降から実際の開発フローについて解説していきます。

【通常の開発フロー】

では、通常の開発フローを解説しています。

(1)featureブランチを作成する

ターミナル
$ git flow feature start hoge
$ git branch 
* feature/hoge
main
develop

git flow feature start [ブランチ名]とコマンドを実行することで、feature/ブランチ名というブランチ名が作成されます。

このブランチで実際の作業を行います。

ちなみに、git switch -c feature/hogeのように直接ブランチを切っても大丈夫です。(多分。。。筆者の手元では問題なく動きました。)

(2)add,commit,pushする

作業が完了してaddしてcommitしたらpushしてPRを出します。

ターミナル
$ git push origin feature/hoge

(3)レビュー,マージ

Github上でレビューをもらったら、developブランチにマージしてください。

【プロダクトをリリースする】

では、mainブランチにマージしてプロダクトをリリースしていきたいと思います。

(1)releaseブランチの作成

ターミナル
$ git flow release start 1.0.0

上記のコマンドでdevelopブランチからreleaseブランチを作成してくれます。

(2)リリース作業

releaseブランチでリリース作業や、そこで見つかったバグなどを修正します。修正したら、maindevelopブランチにマージしていきます。今回はレビューをしてもらう想定なので、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ブランチを作成して対応します。

その流れを解説していきます。

(1)mainブランチからhotfixを切る

ターミナル
$ git flow hotfix start [ブランチ名]

上記のコマンドでhotfixがブランチを作成することができます。

(2)mainにマージ,タグ付け

修正作業が完了したら、下記のコマンドでPRを出し、レビューをもらってmainにマージします。

ターミナル
$ git push origin hotfix/[ブランチ名]

マージが完了したらタグ付けして、リモートに反映させましょう。

ターミナル
# タグ付け
$ git tag -a v1.0.1 -m hotfix

# リモートにタグを反映
$ git push origin v1.0.1

(3)developブランチにマージ

mainにマージが完了したら、developブランチにマージをして変更を反映させてください。

Git-Flowの基本的なところは以上です。お疲れ様でした🙇‍♂️

Discussion