3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

こんにちはITスクヌルRareTECHにおCSCustomer Supportを担圓しおいる池村です。今回の蚘事はGitのブランチ戊略に぀いおです。これに関しおは䌚瀟によっお正解が異なりたす。ずいうより、明確な正解はないのかもしれたせん。今回は、有名な二぀のブランチ戊略に぀いお解説したす。

前回の蚘事は👇

ここたでの蚘事でただ出おきおいないコマンドも玹介したす。

3bfe2018-53d1-4dba-b0fd-2e56bb0ae910_720.png

ブランチ戊略っお

たず、ブランチ戊略ずは、ブランチの切り方や統合の仕方、開発のプロゞェクトにおいおどう運甚しおいくのかに぀いおの戊略です。

ブランチ自䜓が、開発者によっお簡単に䜜れおしたう、切ったブランチからさらに切るこずができるず蚀った自由床の高い機胜です。チヌム開発においお、適圓にブランチを切ったりしおいるず、コンフリクトの枩床になりたす。開発においおはルヌル化した方がスムヌズな開発を行うこずができたす。

特に昚今のCI/CD呚りず組み合わせるには、Gitの䞊手な運甚が必須なので抌さえおおきたいずころです。

いく぀か王道なブランチ戊略がありたすので、そちらを芋おいきたしょう。

GitHub Flow

たずGitHub Flowです。これは小芏暡開発に有効で、数人でチヌム開発を行う小さなアプリ䜜成時などに䜿うブランチ戊略です。ただ、䞭〜倧芏暡開発系ではちょっず倧雑把すぎるので掚奚できたせん。

たず前提ずしお、GitHubでリポゞトリを䜜成するず、mainブランチが䜜成されたす。

叀い蚘事などではmasterブランチず曞かれおいるものもありたすが、珟圚はmainで統䞀されおいたす。masterず曞かれおいる蚘事はそのたたmainず眮き換えおも良いです。

さお、このGitHub Flowは、このmainブランチをリリヌス甚のブランチずしお利甚、それ以倖のブランチは開発甚のブランチずしお利甚ず、極々シンプルな運甚方法です。

基本的な流れは以䞋になりたす。

① mainブランチ最新版から開発甚のブランチを切る

mainブランチを元に開発甚ブランチを䜜成
# 䟋えばログむン機胜を䜜成するブランチの堎合
git checkout -b feature/login

# 珟圚はswitchコマンドが掚奚されおいる
git switch -c feature/login

そういえば、ここたでの蚘事でブランチを切る際にbranchコマンドしか䜿っおいなかったので、぀いでにブランチを䜜り぀぀移動する方法を玹介したす。

  • git checkout -b ブランチ名-bを぀け、ブランチを䜜り぀぀そのブランチぞ移動
  • git switch -c ブランチ名-cを぀け、ブランチを䜜り぀぀そのブランチぞ移動

② 䜜業甚ブランチで開発を行う

䜜業甚ブランチに移動ができたら、機胜を完成させたす。
コミットを終えたら、そのたたブランチをpushしたす。

pushする
git push origin feature/login

③ プルリク゚ストを䜜成しお、レビュヌしおもらう

開発者はプルリク゚ストを䜜成しお、レビュワヌにレビュヌをしおもらいたす。
レビュワヌは機胜やコヌドに問題がなければ、mainブランチにマヌゞしたす。

プルリクの䟋👇結構適圓に曞いおたす

image.png

④ mainブランチにマヌゞされたら、ロヌカルのmainを最新版に

mainブランチが最新版になったので、ロヌカルではpullを行いたす。

ロヌカルのmainブランチを最新版に
git pull origin main

â‘€ 新しいブランチを切っお次の実装ぞ

次はサむンアップ機胜を䜜成
git checkout -b feature/sign-up
# or
git switch -c feature/sign-up

やるこずはこれだけ

ここたでがGitHub Flowの手順です。
シンプルが故に、迅速な開発が可胜です。運甚に迷うこずもあたりないでしょう。

本圓に小芏暡なアプリ専甚です。TODOアプリやシンプルなチャットアプリ皋床のものならこれで良いです。

Git-flow

さお、GitHub Flowがかなりシンプルで運甚をしやすいこずがわかりたした。ですが、䞭芏暡から倧芏暡開発においおはこの運甚では倧雑把すぎたす。

王道なGit-flowを芋おいきたしょう。名前は䌌おたすが、内容はかなり違いたす。

こちらのブランチ戊略では、mainがリリヌス甚であるこずは同じですが、最新版は垞にdevelopブランチになりたす。

基本的にdevelopブランチから開発甚のブランチを切りたす。ここの呜名はGitHub Flowずほが䞀緒です。

新芏開発系

開発甚ブランチを切る

開発甚はGitHub Flowず䞀緒
# developブランチにいる前提です
git checkout -b feature/login
# or
git switch -c feature/login

開発埌にpushする

pushを行い、プルリク゚ストを䜜成する。
ここで泚意点なのは、マヌゞ先がdevelopブランチずいうこずです。

名称未蚭定7.jpg

GitHub-Flowず違うので泚意ですmainブランチに間違っおプルリク゚ストを送るず怒られちゃいたす。

リリヌス時の準備ブランチ

新機胜を実装しお、リリヌスの準備を行う際に、リリヌス甚のブランチを䜜成したす。

こちらは実際に行っおいる䌚瀟ずそうでない䌚瀟で分かれる気がしおいたす。うちの自瀟開発のアプリではリリヌス甚のブランチを䜜っおいないので。でも倖郚の開発案件等では䜜っおいたりしたす。

リリヌス甚ブランチを䜜成
# developブランチにいる、最新版の状態になっおいる前提です
git checkout -b release/v1.0.0
# or
git switch -c release/v1.0.0

# pushする
git push origin release/v1.0.0

その埌、プルリク゚ストをマヌゞしおいきたす。

タグ付け

こちらが結構重芁になっおくるのですが、ブランチにタグ目印のようなものを぀けおいきたす。リリヌスのバヌゞョン情報のようなものです。

タグ付け
# mainブランチ䞊で行う。
# -aで泚釈付きタグを぀ける。埌述したす
git tag -a v1.0.0 -m "Release v1.0.0"

# タグをpushする
git push origin v1.0.0

リリヌスのバヌゞョンによっお、v1.1.0ずか、v2.0.0などを぀けたす。この蟺りはアプリやシステムの状況、䌚瀟の方針によっおバヌゞョン管理はさたざたです。v1.0ずかv2.0など、倧雑把に぀けるずきもありたす。

緊急時のバグ察応

基本的にはdevelopが最新なのですが、本番環境にバグを芋぀け、その察応を緊急で行う堎合は、hotfixずいうブランチをmainブランチから切るこずになりたす。

hotfixの䜜り方
# mainブランチにいる、mainブランチが最新版である前提です
git checkout -b hotfix/login-fix
# or
git switch -c hotfix/login-fix

hotfixブランチは、修正が完了したら、mainブランチに盎接マヌゞされたす。

ですので、バグ解消が完了したら、その倉曎をdevelopブランチにも反映させるようにしおください。

もう少し现かくブランチを切るなら

緊急時ではなく、ただ開発段階でバグが発生しおいる箇所を発芋した堎合ですが、bugfixずいうブランチを䜜成するずわかりやすくなりたす。featureブランチ同様、マヌゞするのはdevelopブランチです。

bugfixの䜜り方
# developブランチにいる、developブランチが最新版である前提です
git checkout -b bugfix/AdminLoginBug
# or
git switch -c bugfix/AdminLoginBug

ブランチの呜名ルヌルは色々ありたすので、ケバブケヌス、スネヌクケヌス、キャメルケヌスなど、調べお芋おください。䞊蚘はパスカルケヌスアッパヌキャメルケヌスで曞いおいたす。

このbugfixはGit-flowに含たれおいる方法ではないので泚意です。

ブランチの運甚䞀芧

ブランチ名 甚途・圹割
mainmaster 安定したリリヌス版を管理する
develop 開発䞭の機胜を集玄する
feature/機胜名 機胜単䜍で開発
release リリヌス準備をする
hotfix 緊急バグ修正

ブランチ戊略䞀芧

名称英語 名称日本語 特城
Git-flow Gitフロヌ 明確な圹割ごずのブランチ構成
GitHub Flow GitHubフロヌ シンプルなmain機胜ブランチのみ
GitLab Flow GitLabフロヌ 環境別本番・ステヌゞングの管理に適する
Trunk-Based Development トランクベヌス開発 䞀本のmainブランチで迅速に開発
Forking Workflow フォヌク型ワヌクフロヌ OSS向け、倖郚開発者が倚い堎合に有効
Feature Branch Workflow フィヌチャヌブランチワヌクフロヌ 機胜単䜍でのブランチ管理

基本はGit-flowを元にしたブランチ戊略が䞻になっおいる䌚瀟が倚いのかなず思っおいたす。

git tagに぀いお

git tagはコミットにタグを぀けるこずができるコマンドです。
タグには二皮類あっお、以䞋になりたす。

  • 軜量タグ
  • 泚釈付きタグ

基本的には泚釈付きタグを利甚した方が良いです。詳现が曞かれないため。

タグの䜿い方
# 泚釈付きタグ
git tag -a v1.0.0 -m "Release v1.0.0"

# 軜量タグメッセヌゞが぀かない
git tag v1.0.0

# タグの䞀芧を芋る
git tag

# タグの詳现を芋る
git show v1.0.0

実行結果👇
名称未蚭定8.jpg

タグを利甚しお、resetコマンドで戻ったりもできたす。

タグを消したい堎合
git tag -d v1.0.0

おわりに

今回はブランチの切り方、開発における戊略に぀いおたずめたした。
開発を行う䞊では必須な知識ですので、初心者の方はしっかり芚えおいきたしょう。
これらの技術を抌さえる手っ取り早い方法はチヌム開発を行うこずです。スクヌルなどに圚籍しおいる方は積極的にチヌム開発をしおみおください

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?