Fork VS Clone
いい質問〜!ここ混ざりがちだよね😆 ざっくり 「権限」と「目的」 で分けると超わかりやすいよ。
クローン(clone)
目的:自分のローカルで作業したいだけ
- リポジトリを 自分のPCにコピーする
- GitHub上の権限は変わらない
- pushできるかは 元リポジトリの権限次第
使う場面
- 自分のリポジトリ
- 会社・チームで書き込み権限があるリポジトリ
- OSSを読むだけ・動かすだけ
git clone https://github.com/org/repo.git
👉 「普通に開発する時はだいたいコレ」
フォーク(fork)
目的:権限がないリポジトリに変更を出したい
- 他人のリポジトリを 自分のGitHubアカウントにコピー
- 自分のフォークなので 自由にpushできる
- 元リポジトリには直接は反映されない → Pull Requestで提案する
使う場面
- OSSにコントリビュートしたい
- 他人のリポジトリをベースに魔改造したい
- 「自分の実験場」がほしい
流れはこんな感じ👇
元repo
↓ fork
自分のGitHub上のrepo
↓ clone
ローカル
↓ push
自分のrepo
↓ PR
元repo
一発で判断する表 ✨
| 状況 | 選ぶのは? |
|---|---|
| 書き込み権限がある | clone |
| 書き込み権限がない | fork |
| OSSにPR出したい | fork |
| 動かして読むだけ | clone |
| ベースにして別プロダクト作る | fork |
エンジニアあるある補足
- forkしても 最初はcloneも必須(ローカル作業するから)
- fork後は
upstreamを追加して元repoと同期するのが定番
git remote add upstream https://github.com/original/repo.git
最初は 👉 「PR出す? → fork」「出さない? → clone」 って覚えちゃえばOK!