lvncerpedia

いいねいいね、そのへん最初ちょっと混乱するよね〜 超ざっくり&イメージ重視でいくね👇


🔹 まず全体像

GitHubでよくある構成はこんな感じ👇

       (本家リポジトリ)
          upstream
             ↑
             │ fork
             ↓
      (自分のリポジトリ)
           origin

🔹 upstream とは?

👉 元のリポジトリ(本家)

例えばOSSに参加する時:

  • 本家 → upstream
  • 自分のfork → origin

って呼ぶのが一般的


🔹 origin とは?

👉 自分のリポジトリ

origin = 自分のGitHub

🔹 base とは?(PRのとき)

👉 マージ先のブランチ

PR作るときに出てくるやつ👇

base ← マージされる側(行き先)
compare ← 自分の変更

🔹 PRのイメージ

upstream:main   ← base(ここに入れたい)
        ↑
        │ PR
        ↓
origin:feature ← compare(自分の変更)

🔹 もうちょいリアルな流れ

① forkする

upstream (本家)
   ↓ fork
origin (自分)

② 作業する

origin/main
   ↓
origin/feature  ← ここで開発

③ PR出す

origin/feature → upstream/main

🔹 upstream が必要な理由

これめっちゃ大事👇

本家が更新されるから

upstream/main ← 更新される
        ↓
origin/main  ← 追従したい

👉 だからこうする:

git fetch upstream
git merge upstream/main

🔹 超まとめ

upstream = 本家
origin   = 自分
base     = マージ先
compare  = 変更元

🔹 最後に一言

正直これ、

👉 「どこから来てどこに入れるか」

だけ意識すれば一気に理解できるよ😏


もし「実際のコマンドどう使うか」とか「rebaseのときどうなる?」とかも気になったら一緒にやろ〜 👍