はじめに
GitHubで他人のリポジトリに表示されているForkとuse this template(以下、Template Repository)を見たことはありませんか?
表示場所が近く用途が混同されやすいですが、ForkとTemplate Repositoryには明確な役割の違いがあります。
本記事では、その違いと使いどころを分かりやすく整理します。
インフォメーション
※本記事は「基本操作は理解しているが、ForkとTemplate Repositoryの違いを整理したい人」を対象としています。
Fork 機能 とは
Forkする対象のリポジトリ(以下、親リポジトリ)のコミット履歴ごと自身のリポジトリ(以下、子リポジトリ)へ複製されるため、過去の変更理由や不具合発生時の流れを追いやすくなります。
親リポジトリで変更があればSync Forkで変更されたコードを子リポジトリに同期させることも可能です。
また、Forkすると親リポジトリ所有者へ通知が送信されます。
使いどころ
主にOSS開発を行う場面で使用されます。
コミット履歴があると、問題発生時に「どの変更が原因か」「なぜその修正が行われたか」を追跡できます。これにより、デグレードを避けた修正がしやすくなります。
OSS開発ってなに?と言う方はこちらの記事をご覧ください。
Repository Template機能 とは
親リポジトリのコードをそのまま子リポジトリ(自身のリモートリポジトリ)にコピーします。
Forkとの明確な違いは以下の通りです。
- Templateから作成したリポジトリにはコミット履歴を含んでいません。
- 「initial commit」というコミット履歴のみ自動作成されます。
- Forkは他人のリポジトリを複製した扱いになるため、自身の貢献グラフには反映されません。一方、テンプレートから作成したリポジトリは自身の新規リポジトリとして扱われるため、コミットが草(Contribution)として表示されます。
使いどころ
コミット履歴がなくても問題ない場合に使用されます。
例えば、OSS開発はしないけどリポジトリのプロジェクト構成だけを真似したいやスターターキットを作りたいという場合です。
自身のリポジトリでRepository Template機能をオンにする場合の設定手順
- 対象のリポジトリを開く
- 「Settings」 → 「General」 を選択
- 「Template repository」にチェックを入れる
まとめ
| 役割 | Fork | Template Repository |
|---|---|---|
| コミット履歴 | コピーされる | コピーされない |
| 推奨用途 | OSSへの貢献 | テンプレ使用・スターターキット作成 |
| 親リポジトリとの同期 | ||
| 親リポジトリ所有者への通知 | ||
| 草(Contribution) |
参考資料
Fork資料
Repository Template資料