LoginSignup
5
1

業務でよくみるGitの運用方法について勉強する

Posted at

今まで入ってきた案件で使ったgit運用方法を改めて勉強しなおします。
Git-flow, GitHub-flow, GitLab-flowの3つをまとめます。

chatGPTを使って勉強をしています。

Git-flow, GitHub-flow, GitLab-flowの違いについて

Git Flow、GitLab Flow、およびGitHub Flowは、ソフトウェア開発プロジェクトでのバージョン管理とコラボレーションを効率的に行うためのGitワークフローです。それぞれのワークフローは特定の目的や状況に適した方法であり、以下のような違いがあります。

Git Flow

  1. ブランチ戦略: master, develop, feature/*, release/*, hotfix/* など複数のブランチを使用。
  2. リリース管理: リリースブランチを作成して、リリース前のテストやバグ修正を行う。
  3. ホットフィックス: 緊急のバグ修正はhotfixブランチで行い、masterdevelopにマージ。
  4. 複雑性: 機能が多く、大規模なプロジェクトに適しているが、学習曲線がある。

GitLab Flow

  1. ブランチ戦略: masterブランチと環境ブランチ(例:staging, production)を使用。
  2. リリース管理: masterブランチが常にデプロイ可能な状態を保つ。
  3. 環境ごとのブランチ: 環境に応じてブランチを作成し、マージする。
  4. 柔軟性: Git Flowよりもシンプルで、CI/CDとの統合が強い。

GitHub Flow

  1. ブランチ戦略: main(またはmaster)とfeature/*ブランチのみ。
  2. リリース管理: mainブランチが常にデプロイ可能な状態を保つ。
  3. プルリクエスト: 新しい機能や修正はプルリクエストを通じてレビューされる。
  4. シンプルさ: 小規模から中規模のプロジェクトに適しており、短い学習曲線。

それぞれのワークフローが持つ特性によって、プロジェクトの要件やチームの好みに最適なものを選ぶことができます。

それぞれの運用方法を深掘りしてみる。

Git Flow

Git Flowは、Vincent Driessenによって提案されたブランチ戦略であり、大規模なプロジェクトや複数の開発者が関わるプロジェクトでよく使用されます。Git Flowのブランチ戦略は非常に構造化されており、リリース管理やホットフィックス、機能開発などを効率的に行うことができます。

主なブランチ

  1. masterブランチ: このブランチはプロダクション環境にデプロイされるコードを保持します。リリースごとに更新されます。

  2. developブランチ: 開発中のコードがこのブランチにマージされます。このブランチは次のリリースのための「開発用」ブランチとなります。

  3. feature/*ブランチ: 新しい機能や改善を行うためのブランチです。通常はdevelopブランチから分岐し、開発が完了したらdevelopにマージされます。

  4. release/*ブランチ: リリース前にこのブランチをdevelopから作成します。このブランチでの作業は、バグ修正やドキュメント更新など、リリースに必要な最終調整です。

  5. hotfix/*ブランチ: 緊急のバグ修正を行うためのブランチです。masterから分岐し、修正が完了したらmasterdevelop(または現在のreleaseブランチ)にマージされます。

ワークフローのステップ

  1. 新機能開発: developからfeature/*ブランチを作成し、新機能や改善を開発します。

  2. 機能の完了: 機能が完成したら、feature/*ブランチをdevelopにマージします。

  3. リリース準備: リリースが近づいたら、developからrelease/*ブランチを作成します。このブランチでリリースに必要な調整を行います。

  4. リリース: 調整が完了したら、release/*ブランチをmasterにマージし、タグを付けてリリースします。また、このブランチをdevelopにもマージします。

  5. ホットフィックス: 緊急のバグが見つかった場合、hotfix/*ブランチをmasterから作成します。修正が完了したら、このブランチをmasterdevelopにマージします。

  6. 次のサイクル: 新しいfeature/*ブランチを作成し、次のリリースに向けて開発を続けます。

このように、Git Flowは多くのブランチと明確なルールを持っていますが、その分リリース管理や緊急の修正が非常に効率的に行えます。大規模なプロジェクトや、厳格なリリース管理が必要な場合に特に有用です。

git-flow拡張ツールを使用する場合

git-flow拡張ツールを使用する場合、ブランチの作成と管理がより簡単になります。以下に主要なコマンドとその説明を示します。

インストール

まず、git-flow拡張ツールをインストールする必要があります。多くのパッケージマネージャーで簡単にインストールできます。例えば、macOSの場合はHomebrewを使用してインストールできます。

brew install git-flow

初期化

リポジトリでgit flowを初めて使用する場合、次のコマンドで初期化します。

git flow init

このコマンドはいくつかの質問に答える形で進みますが、ほとんどの場合、デフォルトの設定(maindevelopなど)で問題ありません。

Featureブランチ

新しい機能を開発する場合、次のコマンドでFeatureブランチを作成します。

git flow feature start YOUR_FEATURE_NAME

Featureブランチが完成したら、次のコマンドでDevelopブランチにマージします。

git flow feature finish YOUR_FEATURE_NAME

Releaseブランチ

新しいリリースを準備する場合、次のコマンドでReleaseブランチを作成します。

git flow release start YOUR_RELEASE_NAME

Releaseブランチが完成したら、次のコマンドでMain(Master)ブランチとDevelopブランチにマージします。

git flow release finish YOUR_RELEASE_NAME

Hotfixブランチ

緊急のバグ修正を行う場合、次のコマンドでHotfixブランチを作成します。

git flow hotfix start YOUR_HOTFIX_NAME

Hotfixブランチが完成したら、次のコマンドでMain(Master)ブランチとDevelopブランチにマージします。

git flow hotfix finish YOUR_HOTFIX_NAME

これらは基本的なgit-flowのコマンドです。この拡張ツールを使用することで、Git Flowのブランチ管理が簡単になります。

GitLab Flow

GitLab Flowのブランチ戦略は、シンプルかつ柔軟性があり、特にCI/CD(継続的インテグレーションと継続的デリバリー)との統合が強い点が特徴です。以下は、GitLab Flowにおける主なブランチ戦略の要点です。

主なブランチ

  1. masterブランチ: このブランチは常にデプロイ可能な状態であるべきです。新しいコードは、まずこのブランチから分岐し、後でマージされます。

  2. 環境ブランチ(オプション): staging, productionなど、環境に応じたブランチを作成することがあります。これは大規模なプロジェクトや、複数の環境でテストが必要な場合に有用です。

  3. フィーチャーブランチ: 新しい機能やバグ修正は、専用のフィーチャーブランチ(通常はmasterから分岐)で開発されます。

ワークフローのステップ

  1. 新しいフィーチャーまたは修正が必要な場合: masterブランチから新しいフィーチャーブランチを作成します。

  2. コードの変更: フィーチャーブランチでコードの変更を行い、コミットします。

  3. CI/CDパイプライン: コードがプッシュされると、自動的にテストとその他のCI/CDタスクが実行されます。

  4. コードレビュー: 変更が完了したら、マージリクエスト(プルリクエスト)を作成します。チームメンバーがコードをレビューし、問題がなければmasterにマージします。

  5. デプロイ: masterブランチが更新されたら、自動的にデプロイが行われます。必要に応じて、環境ブランチにもマージとデプロイが行われます。

  6. ホットフィックス: 緊急の修正が必要な場合も、新しいブランチを作成し、修正後にmaster(および環境ブランチ)にマージします。

このように、GitLab Flowはmasterブランチを中心に、環境に応じて柔軟にブランチ戦略を適用できるのが特徴です。CI/CDとの連携も強く、効率的な開発が可能です。

GitHub Flow

GitHub Flowのブランチ戦略は非常にシンプルで、短い学習曲線があります。このシンプルさが、小規模から中規模のプロジェクト、特に高速にイテレーションを重ねる必要があるプロジェクトに適しています。以下は、GitHub Flowの主なブランチ戦略とワークフローのステップです。

主なブランチ

  1. main(またはmaster)ブランチ: このブランチは常にデプロイ可能な状態であるべきです。新しいコードは、このブランチから分岐し、後でマージされます。

  2. フィーチャーブランチ: 新しい機能やバグ修正は、専用のフィーチャーブランチ(通常はmainから分岐)で開発されます。

ワークフローのステップ

  1. 新しいフィーチャーまたは修正が必要な場合: mainブランチから新しいフィーチャーブランチを作成します。

  2. コードの変更: フィーチャーブランチでコードの変更を行い、コミットします。

  3. プルリクエスト: 変更が完了したら、プルリクエスト(PR)を作成します。これにより、他のチームメンバーがコードをレビューできます。

  4. コードレビューとテスト: プルリクエストが作成されたら、チームメンバーがコードをレビューします。また、自動テストが実行される場合もあります。

  5. マージとデプロイ: レビューとテストが成功したら、フィーチャーブランチをmainブランチにマージします。マージされたコードはすぐにデプロイされるべきです。

  6. レビューと調整: デプロイ後、変更が正しく適用されたかを確認します。問題があれば、修正を行い、再度プルリクエストを作成します。

このように、GitHub Flowはmainブランチを中心に、シンプルながら効率的な開発が可能です。プルリクエストを活用することで、コードレビューとテストが容易に行え、品質の高いコードベースを維持できます。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1