Skip to content

Commit a661a18

Browse files
committed
ブランチの種類表を修正
1 parent 28761c7 commit a661a18

File tree

5 files changed

+85
-100
lines changed

5 files changed

+85
-100
lines changed

documents/forGitBranch/git_branch_standards.md

Lines changed: 85 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,16 @@ meta:
3535

3636
本規約で想定する、ブランチの種類とその役割を説明する。
3737

38-
| ブランチ名称 | 役割 | ライフサイクル | 派生元ブランチ | 命名規則 | 直プッシュ可否 |
39-
|-----------|------------------------------|---------|------------------|---------------------------------------------------|---------|
40-
| `main` | プロダクション環境と一致させるブランチ | 永続的 | - | `main` 固定 ||
41-
| `feature` | 特定機能の追加/変更 | 短命 | `main``develop` | `feature/${任意名称}`: 詳細は「featureブランチ」節を参照 ||
42-
| `develop` | 開発の大元となるブランチ | 永続的 | `main` | `develop` 固定。複数必要な場合は `develop2` と連番で区別する ||
43-
| `release` | リリース準備作業の実施 | 短命 | `develop` | `release/${yyyymmdd}``release/${リリースバージョン}` など ||
44-
| `hotfix` | mainブランチに対する即時修正 | 短命 | `main` | `hotfix/${任意名称}`: featureブランチに準じる ||
45-
| `topic` | featureブランチにて複数人開発をする場合のブランチ | 短命 | `feature` | `topic/${任意名称}`: featureブランチに準じる ||
38+
| ブランチ名称 | 役割 | ライフサイクル | 派生元ブランチ | 命名規則 | 直プッシュ |
39+
|-----------|-------------------|---------|------------------|---------------------------------------------------|---------|
40+
| `main` | プロダクション環境へのデプロイ用途 | 永続的 | - | `main` 固定 | ❌️ |
41+
| `feature` | 特定機能の追加/変更 | 短命 | `main``develop` | `feature/${任意名称}`: 詳細は[featureブランチ](#featureブランチ) | ✅️※1 |
42+
| `develop` | 開発の大元 | 永続的 | `main` | `develop` 固定。複数必要な場合は `develop2` と連番にする | ❌️ |
43+
| `release` | リリース作業用途 | 短命 | `develop` | `release/${yyyymmdd}``release/${リリースバージョン}` など | ❌️ |
44+
| `hotfix` | mainブランチに対する即時修正 | 短命 | `main` | `hotfix/${任意名称}`: featureブランチに準じる | ✅️ |
45+
| `topic` | 複数人での機能開発用と | 短命 | `feature` | `topic/${任意名称}`: featureブランチに準じる | ✅️ |
46+
47+
※1: topicブランチを利用する場合は、派生させたfeatureブランチへの直プッシュはNGとなる
4648

4749
## mainブランチ
4850

@@ -117,17 +119,13 @@ featureブランチで実現する機能を複数人で開発する場合に使
117119
- できるかぎりシンプルなモデルを選択し、運用コストを下げる
118120
- プロジェクトのフェーズや体制に応じて、変更を許容する
119121

120-
現実的に利用する可能性が高いブランチの運用パターン3つ示す。
121-
122-
選定を記載順で導入を検討する。
122+
現実的に利用する可能性が高いブランチの運用パターンを、運用コストが低い順に3つ示す。
123123

124-
- GitHub Flow → Lite GitLab Flow → GitLab Flow
125-
126-
| 名称 | 利用ブランチ | 備考 | 運用コスト | 使い所 |
127-
|------------------|-------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|-------|-----------------------------------------------------------------------|
128-
| GitHub Flow | `main`<br> `feature` | 最小のブランチ管理パターンで、開発人数が少なく、検証作業は全員で行う場合に有効。<br>マージ毎にプロダクション環境へデプロイする。 || ・個人開発<br>・プロジェクト初期フェーズで断面管理を厳密に行わない場合 |
129-
| Lite GitLab Flow | `main`<br>`develop`<br>`feature`<br>`topic`<br> `hotfix` | GitHub Flowに`develop`ブランチを追加するパターン(特定の呼称はなくLite GitLab FLowと命名)。<br>`main`ブランチをリリースブランチとし、開発ソースコードとは分ける。 || ・稼働済みのプロダクトなど、一定品質を保証する必要がある場合<br>・開発作業とリリース作業が並行しないチーム構成である場合 |
130-
| GitLab Flow | `main`<br>`develop`<br>`release` <br>`feature`<br>`topic` <br> `hotfix` | GitLab Flowでは`main`ブランチを`production`ブランチ、`release`ブランチとを`pre production`ブランチと呼称するが、本規約では`main`/`release` とする。 || ・リリース作業と開発作業が並行して行われる場合<br>・断面を指定して複数テスト環境にデプロイしたい場合 |
124+
| 名称 | 利用ブランチ | デフォルトブランチ | リリース作業 | 使い所 | 備考 |
125+
|------------------|-------------------------------------------------------------------------|-----------|-----------|--------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
126+
| GitHub Flow | `main`<br> `feature` | `main` | `main` | ・開発人数が少なく、検証作業を全員で行う場合 | マージ毎にプロダクション環境へデプロイする。 |
127+
| Lite GitLab Flow | `main`<br>`develop`<br>`feature`<br>`topic`<br> `hotfix` | `develop` | `develop` | ・稼働済みのプロダクトなど、一定品質を保証する必要がある場合<br>・開発作業とリリース作業が並行しない場合 | GitHub Flowに`develop`ブランチを追加するパターンで、特定の呼称はないためLite GitLab FLowと命名する |
128+
| GitLab Flow | `main`<br>`develop`<br>`release` <br>`feature`<br>`topic` <br> `hotfix` | `develop` | `release` | ・リリース作業と開発作業が並行して行われる場合<br>・断面を指定して複数テスト環境にデプロイしたい場合 | GitLab Flowでは`main`ブランチを`production`ブランチ、`release`ブランチとを`pre production`ブランチと呼称するが、本規約では`main`/`release` とする |
131129

132130
## 変則的なパターン
133131

@@ -320,7 +318,75 @@ Gitにはタグ機能があり、リリースポイントとしてタグを作
320318

321319
これにより、リリースしたアプリケーションやライブラリに何か不具合があれば、切り戻しや原因追求が容易になる利点がある。
322320

323-
タグを利用するうえでの運用ルール・命名規則などは[タグ規則](git_tag.md)を参考にする。
321+
## タグの運用ルール
322+
323+
- リリースごとに新しいバージョンを示したタグを発行する
324+
- (推奨) GitHubなどの画面経由でタグを作成する
325+
- mainブランチにてタグを作成する
326+
- 入力間違えなどのケースを除き、一度タグをつけた後は削除しない
327+
- 後述する「タグの命名規則」に従う
328+
329+
![GitHub画面でbackend/v1.6.0のタグを作成する](img/create_new_tag.png)
330+
331+
何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、以下に注意する。画面経由・コマンドライン経由でのタグ作成は混ぜないようにし、運用手順は統一する。
332+
333+
- 軽量 (lightweight) 版ではなく、注釈付き (annotated) 版のタグを利用する
334+
335+
```sh
336+
# OK(注釈付きタグを利用する)
337+
$ git tag "v1.0.4" -m "v1.0.4 🐛Fix item api log"
338+
339+
# NG(軽量タグは利用しない)
340+
$ git tag "v1.0.4"
341+
```
342+
343+
## タグの命名規則
344+
345+
- `v1.2.4` などの [セマンティックバージョニング](https://semver.org/lang/ja/) を基本とする
346+
- モノリポの場合は `frontend/v1.0.0``backend/v2.0.1` など領域ごとにプレフィックスを付与する形式を取る
347+
- プレフィックスにすることで、タグをリスト表示した場合に視認性を上げることができる
348+
349+
命名に従うと、次のようなコマンドで絞り込みで表示できる。
350+
351+
```sh
352+
$ git tag -l --sort=-version:refname "frontend/v*"
353+
frontend/v2.0.0
354+
frontend/v1.3.0
355+
frontend/v1.2.0
356+
frontend/v1.1.0
357+
...
358+
```
359+
360+
また、Gitクライアントによっては `/` を使うことでフォルダのように階層表示ができるため、プレフィックスの区切り文字は `-` ハイフンではなく、スラッシュとする。
361+
362+
## タグメッセージの規則
363+
364+
- (推奨) GitHubを利用中の場合、「[Generate release notes](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes)」を用いて、タイトルや本文を自動生成する
365+
- フロントエンド・バックエンドで整合性を保っているのであれば、メモ目的でバージョンを記載する運用を推奨とする
366+
- 実用的な利用用途が思いつかない場合は、開発者視点での楽しみリリースの大きなマイルストーンの名称など、チームの関心事を記入することを推奨とする
367+
368+
![create new tag](img/create_new_tag_title.png)
369+
370+
何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、GitHub利用時の規則に合わせて次のように作成する。
371+
372+
入力例:
373+
374+
```sh
375+
# OK
376+
$ git tag -a backend/v1.8.0 -m "backend/v1.8.0"
377+
$ git tag -a backend/v1.9.0 -m "backend/v1.9.0 🚀Release with frontend-v3.0.1"
378+
$ git tag -a backend/v2.0.0 -m "backend/v2.0.0 ✨Android版アプリリリース対応"
379+
380+
# NG
381+
$ git tag -a backend/v3.0.0 -m "🚀Release version v2.0.0"
382+
```
383+
384+
## バージョンアップ規則
385+
386+
- 開発しているプロダクトがライブラリの場合、セマンティックバージョニングに厳密に従う
387+
- 開発しているプロダクトがシステム(アプリケーション)の場合、その成熟度や初回リリースの区切りでバージョンアップを行うことを推奨する。適切なバージョンアップを行うことで視認性が上がり、運用負荷を下げることができる
388+
- 例1: 初回リリース、カットオーバーで `v1.0.0` に上げる
389+
- 例2: 稼働後1年以上経過し、中規模以上の大きな機能アップデートがあったので、 `v2.0.0` に上げる
324390

325391
# ラベル規則
326392

documents/forGitBranch/git_tag.md

Lines changed: 0 additions & 81 deletions
This file was deleted.
-12.1 KB
Loading
-11.1 KB
Loading
-16.1 KB
Loading

0 commit comments

Comments
 (0)