Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git standard #1441

Merged
merged 1 commit into from
Dec 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions source/_posts/20241214a_Gitブランチフロー規約の紹介.md
Original file line number Diff line number Diff line change
@@ -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)

<a href="https://future-architect.github.io/coding-standards/documents/forGitBranch/git_branch_standards.html">
<img src="/images/20241214a/image.png" alt="image.png" width="800" height="712" loading="lazy" style="border: 1px solid lightgray;">
</a>

※GitHub/GitLabを利用し、トランクベース開発を採用しないアプリケーション開発を想定しています。

内容へのフィードバックは、Issueかツイッター宛にメンションを入れてコメントを貰えると幸いです。

## なぜ今更Git?

Gitは2005年に公開され、2007年のGitHub登場以降、バージョン管理ツールとして爆発的に普及しました。現在では、業界のデファクトスタンダードと呼べるほどの地位を確立しています。

公開から約20年が経過し、その間にGitFlowやGitHubFlowに代表されるGitブランチ戦略が開発され、Gitの使用方法が定義されてきており、その議論はしつくされていると言っても過言では無いでしょう。

一方で、前述のとおり、Gitの取り扱いに関する資料は世の中に数多く存在しますが、実際のプロジェクトでどの戦略を採用すべきかについて言及している資料は比較的少ないのが現状です。

フューチャーにおいても、各プロジェクトでどのブランチ管理戦略を使用するかの検討や、リリース戦略の認識合わせなど、プロジェクトごとに繰り返し行われてきた経緯があります。

そこで、本規約にて実際のプロジェクトで培われたGit運用の現実的なアプローチを、その理由とともにまとめることにしました。

## 規約のポイント

基本的なブランチ種別やブランチ命名規則、コミットメッセージ規約の他、本規約では特に以下について言及しています。

- ブランチ戦略の選定
git-flow、GitHub flow、GitLab Flowなどブランチ戦略がある中で、どのケースでどのブランチ戦略を使用すればよいのか?について、具体的な指針と推奨戦略を示しています。
また、複数の大型開発が並行する場合や、過去バージョンをサポートする場合のブランチ戦略の拡張についても言及しています。

<img src="/images/20241214a/branch_strategy.png" alt="branch_strategy" width="1200" height="766" loading="lazy" style="border: 1px solid lightgray;">

- マージ戦略の選定
変更を取り込む方法として「マージコミット」「リベース」「スカッシュマージ」を紹介し、以下のケースごとの推奨操作を示しています。
- developブランチからfeatureブランチへ変更を取り込む場合
- featureブランチからdevelopブランチへ変更を取り込む場合
- developブランチやmainブランチ等の永続ブランチ間で変更を取り込む場合

| | |
|-- |--|
| <img src="/images/20241214a/develop2feature.png" alt="develop2feature" width="1200" height="700" loading="lazy" style="border: 1px solid lightgray;"> | <img src="/images/20241214a/feature2develop.png" alt="feature2develop" width="1200" height="753" loading="lazy" style="border: 1px solid lightgray;"> |

その他、アンチパターンの紹介や、`git config`、GitHub/GitLabの推奨設定についても触れています。

## 今後

Git運用の規約化については一旦完了ですが、内外からのフィードバックを受けて継続的にアップデートをしていく予定です。

また、今後も様々な設計方針をOSS化していく予定です。

Binary file added source/images/20241214a/branch_strategy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/images/20241214a/develop2feature.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/images/20241214a/feature2develop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/images/20241214a/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/images/20241214a/thumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading