今回は共同開発(チーム開発)をする際、リポジトリをclone(クローン)して進めるべきなのか?fork(フォーク)して進めるべきなのか?について解説したいと思います。それぞれのメリット・デメリットがあるので、それらを把握して適切な方法で開発していきましょう。
結論
結論としては、以下の条件に当てはまればcloneで開発を進めていきます。
- 知り合い同士で共同開発をする
- Githubの操作に不安がある
- 出来るだけ簡単にしたい
一方で、以下の条件に当てはる場合はforkで開発をしていきましょう。
- 見知らぬ人と共同開発する
- 他の人がどのような作業を行っているのか都度把握したい
- 様々な人を巻き込んだ大規模開発である
簡単にまとめると、手軽に共同開発したい場合はclone、大掛かりな開発である場合はforkで進めていくのがおすすめです。
cloneとは
cloneとは、リモートリポジトリを自分のパソコンにまるっと複製することです。リモートリポジトリの内容をダウンロードし、自分のパソコンにローカルリポジトリとして作成することができます。
イメージとしては下図です。

他の人のリモートリポジトリを自分のPCに複製するので、自由にコミット&プッシュやマージを行えるという特徴があります。
forkとは
forkとは、他人のリモートリポジトリを自分のアカウントのリモートリポジトリに複製することです。開発者は複製した自分のリモートリポジトリをcloneして、開発を進めていきます。
イメージとしては下図です。

- 複製したいリモートリポジトリ(リモートリポジトリA)をforkする
- forkしたリモートリポジトリ(リモートリポジトリB)をcloneする
- forkしたリモートリポジトリ(リモートリポジトリB)にコミット&プッシュする
- リモートリポジトリAの管理者にPull Requestを送信
プルリクエストを毎回送信することから、レポジトリの管理はしやすい反面、手間が増えてしまうという特徴があります。
まとめ
- cloneは知り合い同士で手軽に始めたい時におすすめ
- forkは見知らぬ人と大掛かりな開発を行う時におすすめ
- cloneに比べforkはやや手順が多い
今回は共同開発(チーム開発)をする際、リポジトリをclone(クローン)して進めるべきなのか?fork(フォーク)して進めるべきなのか?について解説しました。それぞれのメリット・デメリットを理解した上で、開発を進めていきましょう。