カルキチブログ

Git FlowとGit Flowによるリリース作業について

僕の職場のプロジェクトの多くは、Git Flowに沿って開発を進めています。

その際、リリース作業について全く知らず、先輩にめっちゃ迷惑をかけたので、今回はGit Flowのリリース作業の流れについてと、ついでにGit Flowについてまとめてみました。

今回の記事は、人に読んでいただくというよりも自分のためのメモみたいな感じで書いたので、全体的に結構粗めです。

そこだけご容赦ください。。。

そもそもGit Flowとは何か?

Git FlowとはGitの開発手法の一つであり、ツールの名前でもあります。

ツールはこれですね!

https://github.com/nvie/gitflow

Git Flowでは主に以下のようにブランチを分けて開発を進めていきます。

  • master・・・リモートにプッシュするとデフォルトで作成されるブランチ。アプリケーションやサイトが安定して動く状態にしておく必要がある。
  • develop・・・最新の変更を反映するためのブランチ。常に最新の状態にしておく。
  • release・・・リリース直前(masterに取り込む直前)のブランチ。
  • feature・・・新機能の開発(サイトならデザインの変更)などに用いる。基本的にはこのブランチのみで作業を行う。
  • fix・・・不具合が発生した時は、fix/〇〇という形でブランチを切って作業を行う

基本的にはfeatureブランチで作業を行い、developに対してプルリクを出し、レビュワーから承認を受けたらdevelopにマージして、masterにも変更を反映するという流れを繰り返すことで開発を進めていきます。

Git Flowを採用するメリットとしては以下のようなメリットがあるそうです。

  • 本番にリリースしたデータと、開発・修正している内容が明確になる
  • 開発や修正、リリースなどいくつもの作業を同時並行で進めることができる
  • 操作のマニュアル(運用ルール)を定めやすい

ブランチごとに明確な役割を持たせていると、複数の作業を同時並行で進めやすいなーとは実際に作業していて、確かにそうだなーとは感じました。

Git Flowにおけるリリース作業とは?

Git Flowにおけるリリース作業とは、featureなどで機能の開発を行いdevelopにマージした後に、Tagを付与した上でmasterブランチに取り込む作業を指します。

リリースタグを作成した際にマージ済みのブランチを削除する手順があるので、Gitグラフが綺麗に見えるというメリットがあるそうです。

→よくよく考えてみると、どのプロジェクトも作業内容とバージョン名しかコミットされていないので、コミットグラフは綺麗になっていたような気はします。。

Git Flowでリリース作業を行う方法

Git Flowでリリース作業を行うには、git flowをインストールする必要がありますが、インストールはとても簡単です。

Macの方はターミナルを開いて、以下のコマンドを入力すればインストール完了です。

brew install git-flow

git flow をインストールしたら、Git管理しているリポジトリに進んで、以下のコマンドを入力してください。

聞かれることは、全部デフォルトのままでOKです

git flow init

ブランチも必ず最新の状態にしておきます。

git checkout develop
git fetch --prune
git pull origin develop

最新の状態にしたら、タグの状態を確認します。

すでにgit flowが導入されている場合は、以下のコマンドを打つとタグの一覧が表示されます。

git tag

タグの状態を確認したら、リリースするバージョンを入力します。

このコマンドを打った時点でブランチ一覧を表示すると、releaseブランチに移動します。

git flow release start 1.0.0
git branch

CHANGELOG.mdやREADME.mdの編集を行います。

変更したらコミットしましょう。

vi CHANGELOG.md
vi README.md
git add .
git commit -m 'v1.0.0'

最後にタグの作成を行いリリースブランチとタグをリモートにプッシュしましょう。

git tag 1.0.0
git flow release publish 1.0.0
git push --tags

ここまでの作業を行えば、後はリモートにrelease/バージョン名という形のブランチがプッシュされているはずなので、masterに変更を取り込みましょう。

まとめ

  • Git Flowとは・・・Gitを効率的に利用するための開発手法、およびツールの名前
  • Gitのリリース作業とは・・・必要な変更を行った後に、タグを付与した上でmasterブランチに取り込む作業

おまけ

リモートワークがずっと続くと、体の衰えを非常に感じます。

1週間くらい前に、家賃を振り込む必要があり、家から三茶の銀行まで歩いたのですが、徒歩10分くらいなのにも関わらず息切れを起こしてしまいました。

適度な運動、本当に大事です。