フォークとは - オープンソースをカスタマイズする方法
フォーク(Fork)とは、他の開発者の GitHub リポジトリを自分のアカウントにコピーする機能です。コピーしたリポジトリは自分のものとして自由に変更できますが、元のリポジトリ(アップストリーム)とのつながりは保たれています。
オープンソースプロジェクトをカスタマイズしたり、気になるプロジェクトに貢献(コントリビュート)したりする際に使います。
対象読者: GitHub を使ったことがあり、OSSへの貢献に興味がある方
学習時間の目安: 読了 15分
前提知識: Git の基本操作(add・commit・push)、GitHub のアカウント作成済み
Mac で Node.js と Git を準備します。Node.js のバージョン管理には nvm を使うと便利です。
nvm install 20 # Node.js 20 LTS をインストール
nvm use 20 # インストールしたバージョンを選択
node -v # バージョン確認Git が使えるか確認します。
git --versionGit が未インストールの場合は brew install git でインストールします。
オリジナルプロジェクトをフォークする
Section titled “オリジナルプロジェクトをフォークする”- GitHub でフォークしたいリポジトリを開く
- ページ右上の Fork ボタンをクリック
- 自分のアカウントを選択すると、自分のアカウント配下にコピーが作成される
- リポジトリ名を変えたい場合は Settings から変更可能
💡 フォークしたリポジトリはオリジナルとリンクしていますが、あなたの許可なくオリジナルの変更が反映されることはありません。自分でアップストリームの更新を取り込む操作が必要です。
フォークしたリポジトリをクローンする
Section titled “フォークしたリポジトリをクローンする”フォーク後、自分のアカウントにできたリポジトリをローカルにクローン(ダウンロード)します。
git clone https://github.com/you/forked_repo.git
cd forked_repoアップストリーム(オリジナルのリポジトリ)を upstream として登録します。これにより、後からオリジナルの更新を取り込めるようになります。
git remote add upstream https://github.com/someone/original_repo.git
git remote -v以下のように表示されれば正しく設定されています。
origin https://github.com/you/forked_repo.git (fetch)
origin https://github.com/you/forked_repo.git (push)
upstream https://github.com/someone/original_repo.git (fetch)
upstream https://github.com/someone/original_repo.git (push)依存パッケージをインストールして動作確認する
Section titled “依存パッケージをインストールして動作確認する”JavaScript プロジェクトの場合、依存パッケージをインストールします。
npm install
npm run dev # 開発サーバーを起動して動作確認💡
npm run devで起動するコマンドはプロジェクトによって異なります。package.jsonのscriptsセクションを確認してください。
プロジェクトをカスタマイズする
Section titled “プロジェクトをカスタマイズする”フォークしたリポジトリは自分のものなので、自由に変更できます。例えば Markdown でコンテンツを追加する場合は以下のように記述します。
---
title: "はじめての記事"
date: "2026-04-01"
---
これは最初の投稿です。変更後はコミットして push します。
git add .
git commit -m "コンテンツを追加"
git push origin mainアップストリームの更新を取り込む
Section titled “アップストリームの更新を取り込む”オリジナルのリポジトリが更新された場合、その変更をフォークに取り込めます。
git checkout main
git fetch upstream
git merge upstream/main
git push origin main| コマンド | 説明 |
|---|---|
git fetch upstream | オリジナルの最新情報を取得(ローカルには反映しない) |
git merge upstream/main | 取得した変更をローカルの main に統合 |
git push origin main | 統合結果を自分の GitHub リポジトリに反映 |
⚠️
mergeでコンフリクト(競合)が発生した場合は、該当ファイルを手動で修正してからgit addとgit commitを実行してください。
オリジナルへ貢献する(Pull Request)
Section titled “オリジナルへ貢献する(Pull Request)”自分の修正をオリジナルのプロジェクトに提案したい場合は、Pull Request(プルリクエスト)を送ります。
- 修正を自分のリポジトリに push する
- GitHub でフォーク元のリポジトリを開く
- New pull request をクリック
- 変更内容とその理由を説明する
- オリジナルの管理者がレビューして、採用する場合はマージされる
| 操作 | コマンド |
|---|---|
| フォーク | GitHub の Fork ボタン |
| クローン | git clone |
| upstream 登録 | git remote add upstream |
| アップストリームの更新取り込み | git fetch upstream → git merge upstream/main |
| 自分のリポジトリに反映 | git push origin main |
Q. フォークとクローンの違いは何ですか?
フォークは GitHub 上でリポジトリをコピーする操作で、コピー先は自分の GitHub アカウントです。クローンはリポジトリをローカルのマシンにダウンロードする操作です。通常は「フォーク → クローン」の順で行います。
Q. フォークせずにクローンだけしても良いですか?
クローンだけでもローカルで作業はできますが、変更を push する権限がないため、自分の GitHub アカウントには保存できません。自分のリポジトリとして管理したい場合はフォークが必要です。
Q. upstream はいつ更新を取り込むべきですか?
作業を始める前や、オリジナルで大きな更新があったタイミングで取り込むのが一般的です。定期的に git fetch upstream して最新状態を確認する習慣を持つと良いでしょう。