もくじ
GitHubでフォークしたリポジトリを使って開発していると、「本家リポジトリ(元のリポジトリ)の最新の変更を取り込みたい!」と思うことがあります。
この記事では、本家リポジトリが更新されたとき、フォークしたリポジトリを最新の状態にする方法を解説します。
フォーク元の変更をfetch
→merge
→push
の流れを初心者向けにわかりやすく説明します。
フォークしたリポジトリを最新にする流れ
本家リポジトリの更新をフォークしたリポジトリに反映する手順は以下の通りです。
- フォークしたリポジトリのディレクトリに移動
- 本家リポジトリを「アップストリーム」として登録
- 本家の最新変更を取得
- フォークしたリポジトリのブランチを最新化
- 変更をGitHubにプッシュ
①フォークしたリポジトリのディレクトリに移動
cd /forkerepository
②フォーク元を「アップストリーム」として登録
以下のコマンドを実行し、フォークしたリポジトリに本家のリポジトリを「upstream」として登録します。
※以下のコマンドは1度実行すれば、2回目以降は不要です。
git remote add upstream 本家のリポジトリのURL
アップストリームの登録確認
以下のコマンドを実行し、upstreamが追加されていれば問題ありません。
git remote -v

アップストリームのURLを間違えた場合の修正方法は、以下の記事にまとめています。
-
【Git】リモートリポジトリのURLを変更・修正する方法
もくじ間違ったリモートURLを修正する方法1. 現在のリモートURLを確認する2. git remote set-url コマンドでURLを修正する3. 修正後のリモートURLを確認するよくあるエラー ...
③本家の最新変更を取得
本家リポジトリの最新の変更を取得します。
以下のコマンドを実行するとupstream(本家)の変更をローカル環境に取り込むことができます。
git fetch upstream
④フォークしたリポジトリを最新化
ローカルのmain
ブランチを最新状態に更新します。
mainブランチに移動
git checkout main
本家の変更をマージ
git merge upstream/main
コンフリクトが発生した場合、手動で修正しgit commit
する必要があります。
⑤最新の状態をGitHubにプッシュ
ローカルで本家の変更を反映できたら、GitHubのフォークしたリポジトリに反映します。
git push origin main
開発ブランチを最新の状態にする
開発ブランチ(例: feature-branch)を最新にする場合も同じ流れです。
開発ブランチへ移動
git checkout feature-branch
最新のmainを取り込む
git merge main
GitHubにプッシュ
git push origin feature-branch
まとめ
フォークしたリポジトリを最新にする手順
git remote add upstream 本家のリポジトリのURL
(最初だけ)git fetch upstream
(本家の変更を取得)git checkout main
git merge upstream/main
git push origin main
開発ブランチを最新にする場合
git checkout feature-branch
git merge main
git push origin feature-branch
書籍でGitを学ぶ
udemyでGitGitを学ぶ

もみじ
Gitの仕組みを理解しながら学習したいという方におすすめの講座です。
私もこの講座でGitの操作方法について学びましたが、 コマンドがどのような仕組みで実行されているのか図解で説明がありとても理解しやすかったです。
今までGitを何となく使用しているだけで、Gitが何をしているのか理解できていない部分がありましたが、それらを理解することができました。
実際にコマンドラインで手を動かしながら学習できるため、初心者でもスムーズに学ぶことができます。
もみじ
これからGitを学びたい方、プロジェクトで使えるようになりたい方には、ぜひ手に取ってほしい一冊です。
私もこの本でGitの操作方法について学びましたが、GitやGitHubの基本的な操作から、実際にコードを管理する方法まで、初心者にも分かりやすく解説されてました。
特に良かったのは、手を動かしながら覚えていける点とコマンドラインだけではなく、SourceTree(クライアントソフト)を使用したGitの操作方法の説明があったところです。
もしGitに苦手意識があるなら、ぜひこの本を読んでみてください。
初心者でもスムーズに学べる内容が詰まっています。