logo

アルパカログ

easy-notion-blogをフォークした後に本家の変更を取り込む方法

私が作った Notion Blog の easy-notion-blog はさまざまなカスタマイズが可能です。

カスタマイズするためにはリポジトリをフォークする必要がありますが、フォークすると本家のアップデートを自分で取り込む必要が出てきます。

この記事では、easy-notion-blog をフォークしてカスタマイズをされている方に向けて、フォーク後に Git を使って本家の変更を取り込む方法を説明します。

ℹ️
easy-notion-blog について知りたい方は Notion Blog が簡単に始められる easy-notion-blog の紹介 をご覧ください。
リポジトリのフォークとは?

まずフォークについて復習しておきましょう。

リポジトリのフォークとは、当時のリポジトリの状態を自分のリポジトリとしてコピーすることを言います。

ここで「当時の」と付けているのは、フォークした後にフォーク元に変更があっても(コミットが追加されても)、フォークした自分のリポジトリには反映されないからです。

これは、エクセルのファイルをコピーして作業した場合に、コピー元に変更が反映されないことをイメージしていただけるとわかりやすいと思います。

画像が読み込まれない場合はページを更新してみてください。
フォークとは当時のリポジトリを自分のリポジトリとしてコピーすること

リポジトリをフォークした後も、フォーク元となった本家のリポジトリでは改良のためにコミットが追加されていきます。

しかし、コピーしたエクセルのファイルに自動でオリジナルの変更が反映されないのと同じように、フォークしたリポジトリに本家の変更は反映されません。

画像が読み込まれない場合はページを更新してみてください。
フォーク後は別のリポジトリになるので本家のコミットは反映されない

ソフトウェアは日々セキュリティ対応や機能追加のために進化しています。

easy-notion-blog もそうで、新機能の追加だけでなくNext.js のアップデートやセキュリティ対応など、さまざまな重要なアップデートを行っています。

次は、本家のアップデートを取り込む方法を説明します。

💁‍♂️
これらのアップデートを取り込まないという選択肢もありますが(全て自己責任のため)、作者としてはアップデートすることをお勧めします。
本家をリモートリポジトリに登録して変更を取得する

本家の変更を取り込むには、まず、本家のリポジトリをリモートリポジトリとして手元の Git に教えてあげる必要があります。

リモートリポジトリとしては origin が一番慣れ親しんでいると思いますが、origin 以外にも登録することができます。

画像が読み込まれない場合はページを更新してみてください。
本家リポジトリをrootとしてリモートリポジトリに登録しよう

リポジトリの URL は手打ちしなくとも GitHub からコピーすることができます。

画像が読み込まれない場合はページを更新してみてください。
本家リポジトリを開いてURLをコピーしよう

本家を root という名前でリモートリポジトリに登録するには git remote add を使って次のようにします。

git remote add root git@github.com:otoyo/easy-notion-blog.git

現在登録されているリモートリポジトリの一覧を確認するには git remote -v を使います。

git remote -v

不要になったリモートリポジトリの登録を削除するには git remote remove を使います。

git remote remove <名前>
リモートリポジトリ名を指定して変更履歴を取得する

本家をリモートリポジトリに登録したら、その名前を使って変更履歴を取得します。

画像が読み込まれない場合はページを更新してみてください。
git fetch <リモートリポジトリ名> で変更履歴を取得する

本家の変更履歴を取得するには git fetch を使って次のようにします。

git fetch root

これで本家の最新の変更履歴を取得することができました。

次は、取得した変更履歴をもとに実際に変更を取り込んでいきます。

コミットを取り込む

まずは GitHub で本家リポジトリを開いて、取り込みたいコミットを探します。Pull Requests などから探すと良いでしょう。

取り込みたいコミットが見つかったらコミットIDをコピーします。

コミットIDは GitHub 上のボタンを押してコピーすることができます。

画像が読み込まれない場合はページを更新してみてください。
ボタンを押してコミットIDをコピーする

対象のコミットをローカルのブランチに取り込むには git cherry-pick を使って次のようにします。

git cherry-pick <コミットID>

画像が読み込まれない場合はページを更新してみてください。
本家のコミットを cherry-pick を使って取り込む

これでローカルのブランチに対象のコミットを取り込むことができました。

忘れずに自分のリポジトリ(origin) にpushしてデプロイしましょう。

💡
コミットを取り込む方法は git cherry-pick を使う以外にも git merge や git rebase を使う方法もあります。特に git merge は Git に慣れてきたらぜひ使ってみてください。

以上です。

この記事では easy-notion-blog をフォークしてカスタマイズをされている方に向けて、フォーク後に Git を使って本家の変更を取り込む方法を説明しました。