本記事では、GitHubでの開発においてよく使われるフォークを活用した運用フローを、リポジトリ・ブランチ構成図と具体的なコマンドを交えて整理します。
新たな職場の運用でフォークを使用し始めたので、自分なりの運用方法とその流れをまとめました。
🟢登場するリポジトリとブランチの整理
以下のような構成を前提とします。
【GitHub (upstreamリポジトリ・チーム共有)】
├─ master(本番用)
└─ develop(開発用)
↑ ↑
プルリク プルリク
【GitHub (originリポジトリ・自分専用のフォーク)】
├─ master(upstream/masterをフォーク)
├─ develop(upstream/developをフォーク)
└─ 作業ブランチ(後で作成される)
↑push
【ローカルPC】
├─ master(origin/masterを追跡)
├─ develop(origin/developを追跡)
└─ 作業ブランチ(upstream/masterから作成)
- upstream: チームで共有するリポジトリ(元リポジトリ)
- origin: 自分専用のフォーク(GitHub上)
- ローカル: 自分のPC環境で作業するリポジトリ
🟢運用の流れ(詳細コマンド付き)
① upstreamリポジトリをフォーク(ブラウザ操作)
- GitHubの画面上でupstreamリポジトリをフォーク
→ 自分用リポジトリ(origin)が作成される。
(コマンド不要・GitHubブラウザ上で操作)
② originリポジトリをローカルにクローン(ローカル操作)
自分のPCにoriginをクローンします。
git clone https://github.com/<あなたのGitHub名>/<リポジトリ名>.git
cd <リポジトリ名>
# upstreamも登録(推奨)
git remote add upstream https://github.com/<元のリポジトリ所有者>/<リポジトリ名>.git
③ upstreamの最新を取得して作業ブランチ作成(ローカル操作)
最新のupstream/masterを元にローカルで作業ブランチを作成。
git fetch upstream
git checkout -b feature/<作業名> upstream/master
④ 作業を行いコミットする(ローカル操作)
ローカルの作業ブランチで作業をしてコミットします。
git add .
git commit -m "作業内容をコミット"
⑤ originリポジトリに作業ブランチをpush(ローカル操作)
ローカルの作業ブランチをoriginにpushします。
git push -u origin feature/<作業名>
⑥ GitHub上でorigin作業ブランチ → origin/developにマージ(GitHub操作)
GitHub画面でプルリクエストを作成し、origin内でdevelopにマージします。
- GitHubページで操作: feature/<作業名> → develop にプルリクエスト&マージ
⑦ origin/develop → upstream/developにプルリク提出(GitHub操作)
マージ後のoriginのdevelopブランチをupstreamのdevelopに向けてプルリクします。
- GitHub上でorigin/develop → upstream/developへプルリク(開発環境でテストを行う)
⑧ upstream/developでテスト確認(GitHub&開発環境操作)
開発環境でテストをして問題なければ次へ。
- (開発環境で動作確認)
⑨ テスト完了後、origin作業ブランチ → origin/masterにマージ(GitHub操作)
動作確認後、本番にリリースするためorigin内でmasterにマージ。
- GitHub画面で操作: originの feature/<作業名> → originの master にマージ
⑩ origin/master → upstream/masterへプルリクしリリース(GitHub操作)
最後に、本番環境へのリリースのためプルリクエスト。
- GitHub画面で操作: originの master → upstreamの master へプルリク&マージ(本番環境へリリース完了)
🟢定期的にoriginをupstreamと同期する方法(推奨)
originのdevelopやmasterが常に最新になるよう、定期的に同期を取りましょう。
# developの同期
git fetch upstream
git checkout develop
git merge upstream/develop
git push origin develop
# masterの同期
git checkout master
git merge upstream/master
git push origin master
これによりoriginは常にupstreamと同じ最新状態を保てます。
🟢最終的な全体イメージ(再掲)
以下の図がこの運用フローの全体イメージです。
[ローカル作業ブランチ]
│push
▼
[GitHub originリポジトリ]
│プルリク
▼
[GitHub upstream develop(開発環境テスト)]
│テスト後マージ
▼
[GitHub origin master(本番準備)]
│プルリク(リリース)
▼
[GitHub upstream master(本番環境)]
🟢この運用のメリット(まとめ)
- フォークしたリポジトリ(origin)を経由することで、本流(upstream)への影響をコントロール可能。
- 開発・テスト・本番のリポジトリとブランチが明確に分かれ、管理がしやすい。
- 他人のリポジトリを汚さず、権限のない環境でも安全に作業が可能。
以上、GitHubフォークを活用した開発フローの完全整理でした。ぜひ参考にしてみてください!