mergeとrebaseの思想 & github flowとは?
このページでは、GitHubを利用したうえでのメモをまとめます。
● merge と rebase の使い分けメモ
■ merge
- 主に「作業ブランチを main に取り込む(合流させる)」ときに使う
- 履歴はそのまま残り、合流点に merge commit ができる
- チーム開発やリモート共有ブランチで安全に使える
git checkout マージしたいブランチ先
git merge マージしたいブランチ元
■ rebase
- 自分の作業ブランチに、更新された main の変更を取り込みたいときに使う
- コミット履歴を「最新 main の上に付け替える」ことで直線的に整理できる
- PR前など、履歴をきれいにしたいときに有効
- すでに他人と共有しているブランチに対して使うと履歴が変わるため注意が必要
■ まとめ:
- merge:安全に合流する方法
- rebase:自分のブランチを整理してから合流準備する方法
● GitHub Flow(複数人開発の標準ワークフロー)
GitHub Flowは、複数人で安全に開発するためのブランチ運用ルールです。
■ 基本思想
- mainブランチは常にデプロイできる状態
- すべての変更はfeatureブランチ経由で行う
- 統合は必ずPull Request(PR)を通す
- レビューとCI:Continuous Integration(継続的インテグレーション)を通過してからmainへマージする
■ 標準フロー
① 朝:最新mainを取得
git checkout main
git pull origin main
② 朝:featureブランチ作成
git checkout -b feature/`date %y-%m-%d`
③ 開発・コミット
git add .
git commit -m "implement login API"
④ 帰り:リモートへpush
git push origin feature/`date %y-%m-%d`
⑤ Pull Request作成(GitHub上)
- feature → main のPRを作成
- レビュー依頼を出す
- CI(テスト・Lintなど)を通す
⑥ マージ(GitHub上で実行)
- レビューOK後にGitHubの「Merge pull request」ボタンで統合
- mainブランチに変更が反映される
⑦ ローカル更新・ブランチ削除
git checkout main
git pull origin main
git branch -d feature/`date %y-%m-%d`
■ マージ方式の種類
- Merge commit:履歴をそのまま合流(標準)
- Squash merge:コミットを1つにまとめてから合流(よく使われる)
- Rebase merge:履歴を一直線にしてから合流(きれいだが運用は選ぶ)
■ まとめ
- 作業:featureブランチ
- 統合:Pull Request(GitHub上)
- 品質保証:レビュー + CI
- 履歴整理:必要に応じてrebase

