Git

Gitで環境ごとのブランチを作成する

やりたかったこと

  • 環境設定をブランチごとにコミットしたい

ブランチを分けたい3環境

  • 開発環境 → ローカル環境の設定を管理するブランチ
  • テスト環境 → テスト環境の設定を管理するブランチ
  • 本番環境 → 本番環境の設定を管理するブランチ

対応前のブランチ

  • master → develop → test
    • master → 本番環境で利用
    • develop(masterから派生) → ローカル開発環境で利用
    • test(masterから派生) → テスト環境で利用

問題点

  • 各ブランチに環境設定をcommitするとブランチ間のマージで毎回差分がでる

原因

  • 作業の流れとブランチ構成が合っていなかった

作業の流れ

開発 → テスト → リリース
develop → test → master

ブランチの流れ

master → develop → test

対応

  • 作業の流れに合わせてブランチを作成し直す(develop → test → master とする)
  1. masterブランチからdevelopブランチをチェックアウト
  2. developブランチにて開発環境の設定を編集しcommit
  3. developブランチからtestブランチをチェックアウト
  4. testブランチにてテスト環境の設定を編集しcommit
  5. testブランチをmasterブランチにマージ
  6. masterブランチにて本番環境の設定を編集しcommit
  7. 以降、はdevelopブランチで開発 → testブランチにマージ → masterにマージ の順序で作業することで環境設定まわりで差分が発生しなくなる

その他

  • 今使っているブランチ構成

    • develop → 開発環境用のブランチ
    • feature / hotfix(developから派生、develop/masterに合流) → 機能、障害ごとの開発環境用のブランチ
    • master(developから派生) → 本番環境用のブランチ
    • test(masterから派生) → テスト環境用のブランチ(本番環境をベースにして、テストしたいfeatureのみをマージして利用している。毎リリースごとにmasterから作り直し)
  • GitFlowを参考にしていたが、日々リリースがある場合developブランチの状況把握、整合性の確保が難しくなった

  • GitHubFlowを参考にしfeatureからdevelopへのマージはredmineを利用しPullRequest形式にしてリリースすることで対応している

参考

GitFlow
GitHubFlow