@@ -25,15 +25,20 @@ meta:
2525
2626導入に際して行う、GitやGitHub/GitLabの環境設定は、[ 推奨設定] ( recommended_settings.md ) ページに記載している。
2727
28- # ブランチ運用パターン
28+ # ブランチ戦略の選定
2929
3030本ドキュメントで想定する各ブランチ役割については[ ブランチの整理] ( each_branch.md ) に記載する。
3131
32+ ブランチ戦略は以下の方針で選定する。
33+
34+ - できるかぎりシンプルなモデルを選択し、運用コストを下げる
35+ - プロジェクトのフェーズや体制に応じて、変更を許容する
36+
3237現実的に利用する可能性が高いブランチの運用パターン3つ示す。
3338
34- 基本的には運用コストが最小になるパターンを選択し、プロジェクトの体制に応じて運用を変更する 。
39+ 選定を記載順で導入を検討する 。
3540
36- (例) GitHub Flow → Lite GitLab Flow → GitLab Flow
41+ - GitHub Flow → Lite GitLab Flow → GitLab Flow
3742
3843| 名称 | 利用ブランチ | 概要 | 運用コスト | 使い所 |
3944| ---------------- | ------------------------------------------| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------- |
@@ -55,18 +60,18 @@ meta:
5560当然、` develop2 ` はこれらの変更を加味して大型リリース向け開発を進める必要があるので、` develop ` のmainブランチ反映されるたびに` develop ` から` develop2 ` への同期を行う必要がある。
5661` develop ` から` develop2 ` への同期は以下の様に行う。
5762
58- - rebaseとしてしまうと ` develop2 ` を元にfeatureブランチを作成して開発している開発者が混乱することになるため、マージコミットにて同期を行う。
63+ - リベースとしてしまうと ` develop2 ` を元にfeatureブランチを作成して開発している開発者が混乱することになるため、マージコミットにて同期を行う。
5964- 誤操作を避ける目的でcherry-pickは行わない。
6065
6166![ release multi develop branch] ( img/branch_strategy_release_multi_develop.drawio.png )
6267
6368develop2のリリースは以下の手順で行う。
6469
65701 . ` develop ` から` develop2 ` へマージコミットによって同期を行う。(2でコンフリクトが起こらないよう、前準備の意味合いで実施する。)
66- 2 . ` develop2 ` から` develop ` にmergeを行い 、その後は通常のリリースフローに従う
71+ 2 . ` develop2 ` から` develop ` にマージを行い 、その後は通常のリリースフローに従う
67723 . 問題なくリリースが完了し次第、` develop2 ` を削除する
6873
69- ` develop ` から` develop2 ` へmerge後 、` develop2 ` を` main ` ブランチに反映させる手順も考えられるが、` develop2 ` から` develop ` へのマージとすると以下のメリットがある。
74+ ` develop ` から` develop2 ` へマージ後 、` develop2 ` を` main ` ブランチに反映させる手順も考えられるが、` develop2 ` から` develop ` へのマージとすると以下のメリットがある。
7075
7176- 本番環境(=` develop ` )との差分を把握することができる
7277- より一般的な名称である ` develop ` ブランチのみ残るため、新規参画者フレンドリーである
@@ -82,9 +87,9 @@ develop2のリリースは以下の手順で行う。
8287featureブランチのマージ後、マイナーバージョン(あるいはパッチバージョン)を上げたタグをコミットし、本番環境へリリースする。
8388※この例ではversion1とversion2が別リソースとして動いていることを前提としている。同一リソースで複数バージョンが稼働する場合はversion2のブランチで対応を行う必要がある。
8489
85- # マージ戦略
90+ # マージ戦略の選定
8691
87- マージ戦略とは、複数のブランチ間でコードの変更を統合する際に使用される方法やポリシーを指し、以下の事項に影響を与えます 。
92+ マージ戦略とは、複数のブランチ間でコードの変更を統合する際に使用される方法やポリシーを指し、以下の事項に影響を与える 。
8893
8994- プロジェクトのコミット履歴の管理
9095- コンフリクトの解決
@@ -100,7 +105,7 @@ featureブランチのマージ後、マイナーバージョン(あるいは
1001051 . 開発中の機能ブランチに対してメインの開発ブランチの変更をどう取り込むか
1011062 . メインの開発ブランチに開発およびレビューが完了した機能ブランチをどう取り込むか
102107
103- ## 1. 機能ブランチにメインの開発ブランチの変更を取り込む
108+ ## 1. 機能ブランチに開発ブランチの変更を取り込む
104109
105110複数人により同時並行的に開発が進む場合、特定の機能ブランチで開発を進めている最中に、メインの開発ブランチがアップデートされることはよく起こる。
106111
@@ -148,7 +153,7 @@ featureブランチのマージ後、マイナーバージョン(あるいは
148153| AWS CodeCommit | 残る | 消える | 消える | 強制プッシュ関係なく、最新のコミットに対してのみレビューコメントが紐づく。そのため、新しいコミットをPushすると、過去につけたレビューコメントがファイル詳細から消えたように見える |
149154:::
150155
151- ## 2. メインの開発ブランチに機能ブランチの変更を取り込む
156+ ## 2. 開発ブランチに機能ブランチの変更を取り込む
152157
153158プルリクエストを経由して、開発が完了した機能ブランチをメインの開発ブランチに取り込むためには、GitHub(GitLab)上でプルリクエスト(マージリクエスト)を経由する運用を前提とする。
154159
@@ -190,7 +195,7 @@ https://zenn.dev/daku10/articles/github-merge-guardian
190195
191196## 追い抜きリリース
192197
193- 以下のような状況とします 。
198+ 以下のような状況とする 。
194199
195200- 2つのチケット(issue-312、issue-394とする)があり、どちらも同じファイルの修正を含む
196201- 先にissue-312がdevelopにマージされ、その後に着手されたissue-394がマージされた
@@ -220,7 +225,7 @@ https://zenn.dev/daku10/articles/github-merge-guardian
220225
221226![ hotfixで追い抜き] ( img/release_overtaking_hotfix.drawio.png )
222227
223- # コミットメッセージ
228+ # コミットメッセージ規則
224229
225230Gitのコミットメッセージは原則自由とする。理由は以下である。
226231
@@ -232,24 +237,24 @@ Gitのコミットメッセージは原則自由とする。理由は以下で
232237
233238- [ コミットメッセージ規約] ( commit_message_rule.md )
234239
235- # ブランチ名
240+ # ブランチ命名規則
236241
237242ブランチ名の命名規則は、[ ブランチの整理] ( each_branch.md ) の記載内容に従うこと。
238243
239- # ラベル
240-
241- TODO ラベルについて方針を追加する。(ラベルを利用することで、issue, プルリクエストを分類することができる。適切に設定することでリリースノート作成時に有用である。)
242-
243- https://docs.github.com/ja/issues/using-labels-and-milestones-to-track-work/managing-labels
244-
245- # タグ
244+ # タグ規則
246245
247246Gitにはタグ機能があり、リリースポイントとしてタグを作成する運用とする。
248247
249248これにより、リリースしたアプリケーションやライブラリに何か不具合があれば、切り戻しや原因追求が容易になる利点がある。
250249
251250タグを利用するうえでの運用ルール・命名規則などは[ タグ規則] ( git_tag.md ) を参考にする。
252251
252+ # ラベル規則
253+
254+ TODO ラベルについて方針を追加する。(ラベルを利用することで、issue, プルリクエストを分類することができる。適切に設定することでリリースノート作成時に有用である。)
255+
256+ https://docs.github.com/ja/issues/using-labels-and-milestones-to-track-work/managing-labels
257+
253258# 参考1:ローカルでの作業例
254259
255260gitコマンドでの作業例を記載する。リモートブランチへのプッシュは、` --force-with-lease --force-if-includes ` オプションを付けることを必須とする。
0 commit comments