@@ -70,7 +70,7 @@ Gitリポジトリを新規作成するとデフォルトで作成されるブ
7070- ひとつの変更に対してひとつのfeatureブランチを作成し、作業完了後に削除するため、開発中で最も使われる短命なブランチである
7171- 基本的に1人の開発者のみが利用する
7272
73- ![ feature branch] ( ./ img/branch_strategy_feature.drawio.png)
73+ ![ feature branch] ( img/branch_strategy_feature.drawio.png )
7474
7575以下の命名に従う。
7676
@@ -92,7 +92,7 @@ fixtypo
9292
9393開発の中心となるブランチである。
9494
95- ![ develop branch] ( ./ img/branch_strategy_develop.drawio.png)
95+ ![ develop branch] ( img/branch_strategy_develop.drawio.png )
9696
9797## releaseブランチ
9898
@@ -102,7 +102,7 @@ fixtypo
102102- releaseブランチではバグ修正、ドキュメント生成、その他のリリースに伴うタスクのみを実施する
103103- masterブランチのマージコミットにリリースタグを打ち、mainブランチをdevelopブランチへマージ後、releaseブランチを削除する
104104
105- ![ release branch] ( ./ img/branch_strategy_release.drawio.png)
105+ ![ release branch] ( img/branch_strategy_release.drawio.png )
106106
107107## hotfixブランチ
108108
@@ -111,7 +111,7 @@ fixtypo
111111- 修正が完了するとmainとdevelopの両方(あるいは進行中のreleaseブランチ)にマージされる
112112- main/developブランチがあると必要になる可能性がある。main/featureブランチのみの運用では必須ではない(管理上の目的でfeatureとhotfixを分けることはあり得る)
113113
114- ![ hotfix branch] ( ./ img/branch_strategy_hotfix.drawio.png)
114+ ![ hotfix branch] ( img/branch_strategy_hotfix.drawio.png )
115115
116116## topicブランチ
117117
@@ -120,7 +120,7 @@ featureブランチで実現する機能を複数人で開発する場合に使
120120- topicブランチが必要なケースでは、featureブランチへの直接プッシュを行ってはならない
121121- GitHub Flowではfeatureブランチのことをtopicブランチと呼称する場合があるが、本規約ではfeatureブランチから派生するブランチをtopicブランチと定義する
122122
123- ![ topic branch] ( ./ img/branch_strategy_topic.drawio.png)
123+ ![ topic branch] ( img/branch_strategy_topic.drawio.png )
124124
125125# ブランチ戦略の選定
126126
@@ -163,7 +163,7 @@ featureブランチで実現する機能を複数人で開発する場合に使
163163
164164## 1. developブランチを複数作成する場合
165165
166- ![ multi develop branch] ( ./ img/branch_strategy_multi_develop.drawio.png)
166+ ![ multi develop branch] ( img/branch_strategy_multi_develop.drawio.png )
167167
168168日々のエンハンス開発と並行して、数カ月後に大型リリースを行いたい場合がある。このときは複数リリースバージョンを並行して開発するため、 ` develop ` 、` develop2 ` といった複数のdevelopブランチを作る必要がある。
169169
@@ -178,7 +178,7 @@ featureブランチで実現する機能を複数人で開発する場合に使
178178- 誤操作を避ける目的でcherry-pickは行わない
179179- ` devleop2 ` への同期は、 ` develop ` -> ` main ` ブランチに反映されるタイミングで同期を行う(これにより、品質保証済みの変更のみ取り入れることができる9
180180
181- ![ release multi develop branch] ( ./ img/branch_strategy_release_multi_develop.drawio.png)
181+ ![ release multi develop branch] ( img/branch_strategy_release_multi_develop.drawio.png )
182182
183183### develop2のリリース手順
184184
@@ -193,7 +193,7 @@ featureブランチで実現する機能を複数人で開発する場合に使
193193
194194## 2. 過去バージョンをサポートする場合
195195
196- ![ multi version branch] ( ./ img/branch_strategy_multi_version.drawio.png)
196+ ![ multi version branch] ( img/branch_strategy_multi_version.drawio.png )
197197
198198(社内外の)ライブラリでインターフェースの大型改善や仕様変更を受けて、メジャーバージョンを1→2に上げることがる。この時に過去バージョンもサポートする必要があると、バージョン別にsupportブランチを作成する。
199199
@@ -230,7 +230,7 @@ developブランチの変更をfeatureブランチに取り込む方法には、
230230
231231| 1. マージコミット | 2. リベース |
232232| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
233- | ![ マージ] ( ./ img/merge_strategy_develop_to_feature_merge.drawio.png) | ![ リベース] ( ./ img/merge_strategy_develop_to_feature_rebase.drawio.png) |
233+ | ![ マージ] ( img/merge_strategy_develop_to_feature_merge.drawio.png ) | ![ リベース] ( img/merge_strategy_develop_to_feature_rebase.drawio.png ) |
234234| ` get fetch & git merge ` (≒ ` git pull ` )。マージコミットが作成される | ` get fetch & git rebase ` (≒ ` git pull --rebase ` )。最新の開発ブランチの先頭から新たにコミットを作りなされ、マージコミットは作成されない |
235235
236236本規約の推奨は「2. リベース」である。
@@ -325,24 +325,24 @@ Terraformはplanが成功しても、applyが失敗することは多々あり
325325
326326developブランチにfeatureブランチの変更を取り込む方法は下表のように3パターン存在する。
327327
328- | | 1.マージコミット | 2.リベース | 3.スカッシュマージ |
329- | ---- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -- -------------------------------------------------------------------------------------- |
330- | 名称 | Create a merge commit | Rebase and merge | Squash and merge |
331- | 流れ | ![ Merge Commit] ( ./ img/merge_strategy_feature_to_develop_merge_commit.drawio.png) | ![ Rebase and Merge] ( ./ img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png) | ![ Squash and Merge] ( ./ img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png) |
332- | 説明 | ` git merge --no-ff ` で変更を取り込む | featureブランチを最新のdevelopブランチにリベースし、` git merge --ff ` で変更を取り込む | ` git merge --squash ` で変更を取り込む |
333- | 特徴 | developブランチにマージコミットが作成される | マージコミットは作成されず、履歴が一直線になる | featureブランチで行った変更YとZを1つにまとめたコミットがdevelopブランチに作成される |
328+ | | 1.マージコミット | 2.リベース | 3.スカッシュマージ |
329+ | ---- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
330+ | 名称 | Create a merge commit | Rebase and merge | Squash and merge |
331+ | 流れ | ![ Merge Commit] ( img/merge_strategy_feature_to_develop_merge_commit.drawio.png ) | ![ Rebase and Merge] ( img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png ) | ![ Squash and Merge] ( img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png ) |
332+ | 説明 | ` git merge --no-ff ` で変更を取り込む | featureブランチを最新のdevelopブランチにリベースし、` git merge --ff ` で変更を取り込む | ` git merge --squash ` で変更を取り込む |
333+ | 特徴 | developブランチにマージコミットが作成される | マージコミットは作成されず、履歴が一直線になる | featureブランチで行った変更YとZを1つにまとめたコミットがdevelopブランチに作成される |
334334
335335::: tip GitLabを利用する場合
336336
337337GitLabでも開発ブランチに機能ブランチの変更を取り込む方法は3種類ある。
338338
339339ただし、マージリクエスト上のオプションによってコミット履歴が変わる点が注意である。
340340
341- | | 1. Merge commit | 2. Merge commit with semi-linear history | 3. Fast-forward merge |
342- | ---- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
343- | 流れ | ![ Merge commit with squash commits] ( ./ img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png) | 省略 | 省略 |
344- | 説明 | GitHubにおける ` Create a merge commit ` と同様のマージ方法 | ` Merge commit ` と同じコマンドを使用して、機能ブランチの変更を取り込む方法 | GitHubにおける ` Rebase and merge ` と同様のマージ方法 |
345- | 注意 | ` Squash commits ` を選択してマージした場合、` squash commit ` と ` merge commit ` の2つのコミットが作成される | ソースブランチがターゲットブランチより古い場合はリベースしないとマージできない。 | マージリクエスト上で ` Squash commits ` を選択してマージした場合、GitHubにおける ` Squash and merge ` と同様のマージ方法になる(※補足1) |
341+ | | 1. Merge commit | 2. Merge commit with semi-linear history | 3. Fast-forward merge |
342+ | ---- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
343+ | 流れ | ![ Merge commit with squash commits] ( img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png ) | 省略 | 省略 |
344+ | 説明 | GitHubにおける ` Create a merge commit ` と同様のマージ方法 | ` Merge commit ` と同じコマンドを使用して、機能ブランチの変更を取り込む方法 | GitHubにおける ` Rebase and merge ` と同様のマージ方法 |
345+ | 注意 | ` Squash commits ` を選択してマージした場合、` squash commit ` と ` merge commit ` の2つのコミットが作成される | ソースブランチがターゲットブランチより古い場合はリベースしないとマージできない。 | マージリクエスト上で ` Squash commits ` を選択してマージした場合、GitHubにおける ` Squash and merge ` と同様のマージ方法になる(※補足1) |
346346
347347(※補足1)マージ方法で Merge commit を選択して、マージリクエスト上で Squash commits オプションを選択してマージした場合は以下と同義である
348348
@@ -418,7 +418,7 @@ git merge --no-ff $SOURCE_SHA
418418 - issue-312のリリースは業務上の合意が得られていない(エンドユーザ操作に影響があるため、事前告知した日時でリリースしたいなど)
419419 - issue-394は不具合修正であり業務上の優先度が高いため、なるべく早くリリースしたい
420420
421- ![ 同一ファイルを複数] ( ./ img/release_overtaking.drawio.png)
421+ ![ 同一ファイルを複数] ( img/release_overtaking.drawio.png )
422422
423423よく陥りがちな対策としては次の2点が考えられる。
424424
@@ -437,7 +437,7 @@ git merge --no-ff $SOURCE_SHA
437437
4384382の例を以下に図示する
439439
440- ![ hotfixで追い抜き] ( ./ img/release_overtaking_hotfix.drawio.png)
440+ ![ hotfixで追い抜き] ( img/release_overtaking_hotfix.drawio.png )
441441
442442# ブランチ命名規則
443443
@@ -457,7 +457,7 @@ Gitにはタグ機能があり、リリースポイントとしてタグを作
457457- 入力間違えなどのケースを除き、一度タグをつけた後は削除しない
458458- 後述する「タグの命名規則」に従う
459459
460- ![ GitHub画面でbackend/v1.6.0のタグを作成する] ( ./ img/create_new_tag.png)
460+ ![ GitHub画面でbackend/v1.6.0のタグを作成する] ( img/create_new_tag.png )
461461
462462何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、以下に注意する。画面経由・コマンドライン経由でのタグ作成は混ぜないようにし、運用手順は統一する。
463463
@@ -496,7 +496,7 @@ frontend/v1.1.0
496496- フロントエンド・バックエンドで整合性を保っているのであれば、メモ目的でバージョンを記載する運用を推奨とする
497497- 実用的な利用用途が思いつかない場合は、開発者視点での楽しみリリースの大きなマイルストーンの名称など、チームの関心事を記入することを推奨とする
498498
499- ![ create new tag] ( ./ img/create_new_tag_title.png)
499+ ![ create new tag] ( img/create_new_tag_title.png )
500500
501501何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、GitHub利用時の規則に合わせて次のように作成する。
502502
@@ -869,15 +869,15 @@ GUIでのGit操作にあたり、次の2つの拡張機能をインストール
869869
870870サイドバー > Explorer か Source Control > Clone Repository ボタンをクリックし、URLを入力すると、リポジトリをクローンできる。
871871
872- ![ Clone1] ( ./ img/vscode_git_clone1.png) ![ Clone2] ( ./ img/vscode_git_clone2.png)
872+ ![ Clone1] ( img/vscode_git_clone1.png ) ![ Clone2] ( img/vscode_git_clone2.png )
873873
874874### コミットグラフの表示
875875
876876SOURCE CONTROL パネル > 黒丸のグラフアイコン (View Git Graph (git log)) をクリックすると、コミットグラフを表示できる。
877877
878878白丸のグラフアイコン (Show Commit Graph) はGitLensのコミットグラフだが、冒頭の記述通り、Pro版でのみの提供となる。
879879
880- ![ Graph1] ( ./ img/vscode_git_graph1.png) ![ Graph2] ( ./ img/vscode_git_graph2.png)
880+ ![ Graph1] ( img/vscode_git_graph1.png ) ![ Graph2] ( img/vscode_git_graph2.png )
881881
882882### リモートのフェッチ/プル (` git fetch ` / ` git pull ` )
883883
@@ -886,11 +886,11 @@ SOURCE CONTROL パネル > 黒丸のグラフアイコン (View Git Graph (git l
886886- SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、 Fetch を選択
887887- コミットグラフ > 雲アイコン (Fetch from Remote(s)) をクリック
888888
889- ![ Fetch1] ( ./ img/vscode_git_fetch1.png)
889+ ![ Fetch1] ( img/vscode_git_fetch1.png )
890890
891891なお、フェッチ後に以下のようなダイアログが表示される場合があるが、 "Yes" を選択すると、自動で定期的にフェッチを行う。
892892
893- ![ Fetch2] ( ./ img/vscode_git_fetch2.png)
893+ ![ Fetch2] ( img/vscode_git_fetch2.png )
894894
895895### ブランチの作成/チェックアウト (` git branch ` / ` git checkout ` )
896896
@@ -902,24 +902,24 @@ SOURCE CONTROL パネル > 黒丸のグラフアイコン (View Git Graph (git l
902902- コミットグラフ > 作成元コミットの行上で右クリックし、Create Branch... を選択
903903 - "Check out" にチェックを入れると、作成したブランチにチェックアウトする
904904
905- ![ Branch1] ( ./ img/vscode_git_branch1.png) ![ Branch2] ( ./ img/vscode_git_branch2.png)
905+ ![ Branch1] ( img/vscode_git_branch1.png ) ![ Branch2] ( img/vscode_git_branch2.png )
906906
907907### ステージ/コミット/プッシュ (` git add ` / ` git commit ` / ` git push ` )
908908
909909SOURCE CONTROL パネル > 変更ファイルの行 > +アイコン (Stage Changes) をクリックすると、対象ファイルをステージできる。(Changes > +アイコン (Stage All Changes) をクリックすると、すべての変更をステージする)
910910
911- ![ Stage] ( ./ img/vscode_git_stage.png)
911+ ![ Stage] ( img/vscode_git_stage.png )
912912
913913必要な変更をステージ後、 SOURCE CONTROL パネル内でコミットメッセージを入力し、 Commit ボタンをクリックすると、コミットを作成できる。
914914
915- ![ Commit] ( ./ img/vscode_git_commit.png)
915+ ![ Commit] ( img/vscode_git_commit.png )
916916
917917以下のいずれかの操作を実行すると、作成したコミットをリモートリポジトリにプッシュできる。
918918
919919- SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、Push を選択
920920- BRANCHES パネル > 対象ブランチの行 > 雲アイコン (Publish Branch) をクリック
921921- コミットグラフ > 対象ブランチの上で右クリックし、Push Branch... を選択
922922
923- ![ push1] ( ./ img/vscode_git_push1.png) ![ push2] ( ./ img/vscode_git_push2.png) ![ push3] ( ./ img/vscode_git_push3.png)
923+ ![ push1] ( img/vscode_git_push1.png ) ![ push2] ( img/vscode_git_push2.png ) ![ push3] ( img/vscode_git_push3.png )
924924
925925:::
0 commit comments