コンテンツにスキップ
X

フォークとは - オープンソースをカスタマイズする方法

フォーク(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 --version

Git が未インストールの場合は brew install git でインストールします。

オリジナルプロジェクトをフォークする

Section titled “オリジナルプロジェクトをフォークする”
  1. GitHub でフォークしたいリポジトリを開く
  2. ページ右上の Fork ボタンをクリック
  3. 自分のアカウントを選択すると、自分のアカウント配下にコピーが作成される
  4. リポジトリ名を変えたい場合は 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.jsonscripts セクションを確認してください。

プロジェクトをカスタマイズする

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 addgit commit を実行してください。

オリジナルへ貢献する(Pull Request)

Section titled “オリジナルへ貢献する(Pull Request)”

自分の修正をオリジナルのプロジェクトに提案したい場合は、Pull Request(プルリクエスト)を送ります。

  1. 修正を自分のリポジトリに push する
  2. GitHub でフォーク元のリポジトリを開く
  3. New pull request をクリック
  4. 変更内容とその理由を説明する
  5. オリジナルの管理者がレビューして、採用する場合はマージされる
操作コマンド
フォークGitHub の Fork ボタン
クローンgit clone
upstream 登録git remote add upstream
アップストリームの更新取り込みgit fetch upstreamgit merge upstream/main
自分のリポジトリに反映git push origin main

Q. フォークとクローンの違いは何ですか?

フォークは GitHub 上でリポジトリをコピーする操作で、コピー先は自分の GitHub アカウントです。クローンはリポジトリをローカルのマシンにダウンロードする操作です。通常は「フォーク → クローン」の順で行います。

Q. フォークせずにクローンだけしても良いですか?

クローンだけでもローカルで作業はできますが、変更を push する権限がないため、自分の GitHub アカウントには保存できません。自分のリポジトリとして管理したい場合はフォークが必要です。

Q. upstream はいつ更新を取り込むべきですか?

作業を始める前や、オリジナルで大きな更新があったタイミングで取り込むのが一般的です。定期的に git fetch upstream して最新状態を確認する習慣を持つと良いでしょう。