lvncerpedia

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!