Git

Gitのブランチモデルを理解して綺麗にバージョン管理をしよう

どうも、学生エンジニアのmani(@mani_transmです。

学生エンジニアのみなさん、ちゃんとGitHubのブランチは整理してコミットできてますか?

「masterブランチしか使ってねぇやべぇよやべぇよ…」

って方は安心してください。僕も昔やってました(白目)

やっぱりGitHubを使ってチーム開発したことがなかったり、実務で開発したことがない人は「Gitの操作方法は分かるけど、どうバージョン管理すれば良いのか分からない」と思います。

なので今回の記事で、Gitで綺麗にバージョン管理する「ブランチモデル」を具体的に解説していきたいと思います!

mani
mani
昔はmasterブランチにコミットしまくってた僕も、今ではGitHubOSSを公開するまでになったので、ぜひ参考にしてください。

バージョン管理で重要な「3つのブランチ」

さて、Gitのバージョン管理のブランチモデルを詳しく解説されている記事に、「A successful Git branching model」という記事があります。

この記事の中では、バージョン管理は以下の7つのブランチの使用が推奨されています。

7つのブランチ群
  1. master
  2. develop
  3. feature
  4. release
  5. fix
  6. support
  7. hotfix

今回はこの中でも特に重要な太字の3つを解説していきます。

1.developブランチ

developブランチは、その名の通り「開発中の拠点となるブランチ」です。

基本的に開発中に作成した機能や変更は、後述のfeatureブランチで作成したのちに、最終的にこのdevelopブランチに集約されます。

個人開発で特に公開もしないようなプロダクトの開発だと、ブランチをわざわざきらずともローカルでバンバン書いてmasterに直コミットしても何ら問題はないですが、逆に「チーム開発でリリースしている(する予定)のプロダクト開発」の場合は当然ながらmasterブランチに変更をバンバン加えまくるなんてことはしてはいけません。

基本的にmasterブランチは、

  • リリース可能な完全な品質を保証している
  • releaseブランチ等、特定ブランチからのマージでのみ更新される
  • 直接コミットして内容を変更してはならない

という制約があります。

「masterブランチでは外部に公開するものを管理し、developブランチでは開発中の新しいバージョンを管理」→「完成すれば後述のreleaseブランチを経てmasterブランチへマージされる」

というのが基本的な開発フローになります。

2.featureブランチ

featureブランチは「主に機能単位での開発を行うブランチ」です。

開発中の拠点となるのはdevelopブランチでしたが、featureブランチでは「新しくこの機能を作ろう!」となったら、その機能の開発専用にブランチを切り、その中で新機能の開発を行なっていきます。

ここで「なんでdevelopブランチでまとめて作らないでわざわざfeatureブランチを切るの?」という疑問が湧くかもしれませんが、理由としては「チームで開発を行う場合に、メンバー全員が作ったものを好き勝手にdevelopブランチにコミットするとコンフリクトやら変更の上書きやらで地獄絵図になるから」です。

もちろん個人で開発する場合はfeatureブランチに切って開発を行う必要性はあまりないのですが、チーム開発ではこれをしないと開発が破綻します(笑)

mani
mani
featureブランチは「新しい機能を新バージョンのパーツとして開発するブランチ」、developブランチは「featureブランチで作ったパーツを組み立てるブランチ」とイメージすると理解しやすいかもです!

3.releaseブランチ

releaseブランチは「developブランチで開発したバージョンが完成した時に、masterブランチへリリースする準備作業を行うブランチ」です。

そのためdevelopブランチからこのreleaseブランチが切られると、その瞬間から新しい機能の追加や改修等の開発は一切受け付けることができなくなります。

具体的にreleaseブランチでやる事としては、

  • 小さなバグの修正
  • リリースのためのメタデータ(バージョン番号等)の準備

ですね。

これらをdevelopブランチで行うと、次のバージョンの開発を始める際に前バージョンのメタデータを引き継ぐことになり、綺麗な状態で開発に入ることができないので、開発はdevelopブランチ、リリースの準備はreleaseブランチと完全に作業は分けるようにしましょう。

ブランチモデルを理解して綺麗なバージョン管理を!

さて、今回はGitでバージョン管理する上で重要な3つのブランチを解説しました。

簡単に今回解説したバージョン管理のフローをまとめると、

バージョン管理まとめ
  1. 前バージョンのdevelopブランチから新バージョン用のdevelopブランチを切る
  2. featureブランチで新機能の実装や既存機能の改修を行う
  3. featureブランチで作ったものをdevelopブランチへ追加していく
  4. 最終的に完成したものをreleaseブランチへ切り、リリースの準備を行う
  5. 公開してOKな状態になったら、relaese→masterブランチへマージ

という感じですね。

個人での開発だとバージョン管理って疎かになりがちですが、エンジニアとして就職を希望している学生はきちんとバージョン管理ができていると企業へのアピールになると思いますので、ぜひ今回の記事を参考にしてみてください!