diff --git "a/source/_posts/20241214a_Git\343\203\226\343\203\251\343\203\263\343\203\201\343\203\225\343\203\255\343\203\274\350\246\217\347\264\204\343\201\256\347\264\271\344\273\213.md" "b/source/_posts/20241214a_Git\343\203\226\343\203\251\343\203\263\343\203\201\343\203\225\343\203\255\343\203\274\350\246\217\347\264\204\343\201\256\347\264\271\344\273\213.md" new file mode 100644 index 00000000000..14a19ec0dba --- /dev/null +++ "b/source/_posts/20241214a_Git\343\203\226\343\203\251\343\203\263\343\203\201\343\203\225\343\203\255\343\203\274\350\246\217\347\264\204\343\201\256\347\264\271\344\273\213.md" @@ -0,0 +1,74 @@ +--- +title: "Gitブランチフロー規約の紹介" +date: 2024/12/14 00:00:00 +postid: a +tag: + - Git + - GitHub + - GitLab + - チーム開発 + - コーディング規約 +category: + - Infrastructure +thumbnail: /images/20241214a/thumbnail.png +author: 宮崎将太 +lede: "フューチャー社内の有志メンバーでGitブランチフローの規約を作成しました。ひとまずは形になったので紹介します。" +--- + +[GitHub Advent Calendar 2024](https://qiita.com/advent-calendar/2024/github)の14日目の記事です。昨日はwa-chan222さんの[未経験から始めたGitHub活用の基本と学び](https://qiita.com/wa-chan222/items/c951d6ebdded099482c2)でした。 + +## はじめに + +フューチャー社内の有志メンバーでGitブランチフローの規約を作成しました。 +ひとまずは形になったので紹介します。 + +[Gitブランチフロー規約 | Future Enterprise Coding Standards](https://future-architect.github.io/coding-standards/documents/forGitBranch/git_branch_standards.html) + + + image.png + + +※GitHub/GitLabを利用し、トランクベース開発を採用しないアプリケーション開発を想定しています。 + +内容へのフィードバックは、Issueかツイッター宛にメンションを入れてコメントを貰えると幸いです。 + +## なぜ今更Git? + +Gitは2005年に公開され、2007年のGitHub登場以降、バージョン管理ツールとして爆発的に普及しました。現在では、業界のデファクトスタンダードと呼べるほどの地位を確立しています。 + +公開から約20年が経過し、その間にGitFlowやGitHubFlowに代表されるGitブランチ戦略が開発され、Gitの使用方法が定義されてきており、その議論はしつくされていると言っても過言では無いでしょう。 + +一方で、前述のとおり、Gitの取り扱いに関する資料は世の中に数多く存在しますが、実際のプロジェクトでどの戦略を採用すべきかについて言及している資料は比較的少ないのが現状です。 + +フューチャーにおいても、各プロジェクトでどのブランチ管理戦略を使用するかの検討や、リリース戦略の認識合わせなど、プロジェクトごとに繰り返し行われてきた経緯があります。 + +そこで、本規約にて実際のプロジェクトで培われたGit運用の現実的なアプローチを、その理由とともにまとめることにしました。 + +## 規約のポイント + +基本的なブランチ種別やブランチ命名規則、コミットメッセージ規約の他、本規約では特に以下について言及しています。 + +- ブランチ戦略の選定 + git-flow、GitHub flow、GitLab Flowなどブランチ戦略がある中で、どのケースでどのブランチ戦略を使用すればよいのか?について、具体的な指針と推奨戦略を示しています。 + また、複数の大型開発が並行する場合や、過去バージョンをサポートする場合のブランチ戦略の拡張についても言及しています。 + +branch_strategy + +- マージ戦略の選定 + 変更を取り込む方法として「マージコミット」「リベース」「スカッシュマージ」を紹介し、以下のケースごとの推奨操作を示しています。 + - developブランチからfeatureブランチへ変更を取り込む場合 + - featureブランチからdevelopブランチへ変更を取り込む場合 + - developブランチやmainブランチ等の永続ブランチ間で変更を取り込む場合 + +| | | +|-- |--| +| develop2feature | feature2develop | + +その他、アンチパターンの紹介や、`git config`、GitHub/GitLabの推奨設定についても触れています。 + +## 今後 + +Git運用の規約化については一旦完了ですが、内外からのフィードバックを受けて継続的にアップデートをしていく予定です。 + +また、今後も様々な設計方針をOSS化していく予定です。 + diff --git a/source/images/20241214a/branch_strategy.png b/source/images/20241214a/branch_strategy.png new file mode 100644 index 00000000000..fd6005527e8 Binary files /dev/null and b/source/images/20241214a/branch_strategy.png differ diff --git a/source/images/20241214a/develop2feature.png b/source/images/20241214a/develop2feature.png new file mode 100644 index 00000000000..fe8bbc45cd5 Binary files /dev/null and b/source/images/20241214a/develop2feature.png differ diff --git a/source/images/20241214a/feature2develop.png b/source/images/20241214a/feature2develop.png new file mode 100644 index 00000000000..42dd91e8a2e Binary files /dev/null and b/source/images/20241214a/feature2develop.png differ diff --git a/source/images/20241214a/image.png b/source/images/20241214a/image.png new file mode 100644 index 00000000000..5caf1a760c5 Binary files /dev/null and b/source/images/20241214a/image.png differ diff --git a/source/images/20241214a/thumbnail.png b/source/images/20241214a/thumbnail.png new file mode 100644 index 00000000000..b5698539c45 Binary files /dev/null and b/source/images/20241214a/thumbnail.png differ