チーム開発のGit 全体像v1.3 ・ 2026-07-02

push / merge / PR と、その周りで知っておくべき言葉ぜんぶ。

ローカル=あなたのPCの中 リモート=GitHub(みんなの共有置き場) つまずきポイント
今日あなたが実際にやったこと: ブランチ作成 → コミット → プッシュ → PR作成。 最後の マージ は「main保護ルール(承認が必要)」で止まりました。この紙は、その全体像の地図です。

① まず大前提:コードは「2つの場所」にある

Gitのチーム開発でいちばん大事なのは、コードが 手元(ローカル)GitHub(リモート) の2か所にあること。言葉のほとんどは「この2か所の間で、何を・どっち向きに動かすか」を指しています。

🖥 ローカル(あなたのPC)
手元のコピー。ここで自由に編集し、コミット(履歴に保存)する。まだ誰にも見えない自分だけの空間。
  • 作業ツリー(編集中のファイル)
  • コミット履歴(手元の保存記録)
push(上げる) pull(取り込む) 最初は clone
☁️ リモート(GitHub)
チーム共有の正本置き場。この場所のことを origin と呼ぶ。みんなはここを見て同期する。
  • 共有ブランチ(main など)
  • PR・レビュー・履歴

② 変更の一生(クリックで詳細)

1つの修正が「編集」から「みんなに届く」までの流れ。青=手元の作業/緑=GitHub上の作業プッシュがその境目です。各ステップを押すと下に説明が出ます。

↑ ステップを押すと、ここに「何をする操作か・今日の例」が出ます。

③ 本流(main)と枝・合流の流れ

main=みんなの幹(本流)。各自そこから枝(ブランチ)を分け、自分の作業を進め、終わったら合流(マージ)で幹に戻します。下の図は あなたAさん が同時に別の枝で作業して、それぞれのタイミングで合流する様子です。

main(本流・幹) あなた:mock-route-1055(middleware.ts) Aさん:別の機能(別ファイル) ① 枝分かれ checkout -b ② コミット ③ push → PR ④ 承認→マージ(あなたが先に合流) Aさんは後で合流
main(幹) あなたの枝 Aさんの枝 大きい○=合流点(マージ)

あなたがマージしたとき、Aさん・Bさんの「環境」はどうなる?(押して試す)

結論:あなたがマージしても、他メンバーの手元(環境)は勝手に変わりません=影響なし。各自が自分のタイミングで git pull したときだけ受け取ります。ボタンを順に押してみてください。

☁️ GitHub main
みんなの幹
🖥 あなた
あなたのPC
🖥 Aさん
AさんのPC
🖥 Bさん
BさんのPC
まとめ:マージは「GitHubのmainを更新する」だけ。A・Bの手元は触られない(影響なし)。 それぞれが git pull した瞬間に、自分のタイミングで最新を受け取る。作業中でも壊れず、違うファイルならコンフリクトも起きない

④ 相手のコミットに、自分はどう気づく?

結論:Gitは「相手がコミットしたよ」と通知してくれません。 相手が push して、かつ自分が fetch(GitHubを見に行く)して、その2つがそろって初めて気づけます。この節は、そのサインの読み方と、自動で気づくための設定です。

「相手のコミットが見えない」の原因はほぼ2つ: ① 相手がコミットしただけで push してない(=まだGitHubに無い)/② 自分が fetch/pull していない(=取りに行っていない)。どちらか欠けると、相手の変更はあなたの画面に出てきません。

VSCode左下・ステータスバーの読み方

気づきの主役はここ。記号ごとに意味がまったく違います。下は「未コミットあり+相手のpush2件待ち+自分の未push1件」を全部盛りした例。

main* ↓2 ↑1
⑂ main
いま自分がいるブランチ名。
* アスタリスク
手元に未コミットの変更がある印。コミットすれば消えるfetchとは無関係(ここが混同しやすい)。
↓N ダウン
相手がpush済みで、あなたがまだ持っていないコミットがN個。=これが実質「相手のコミット通知」。pullで取り込む。
↑N アップ
あなたがコミットしたがまだpushしていないのがN個。pushで解消。
↻ 同期ボタン
押すと fetch+pull/push をまとめて実行。

自動で気づけるようにする:autofetch

大事な落とし穴:この ↓N自分でfetchしないと出ません。VSCodeには裏で定期的にfetchする git.autofetch があり、初期状態はオフ。オンにすると数分おきに自動で覗いて、相手がpushしたら ↓N が勝手に出ます。2人以上で作業するなら、オンを推奨。

オンにする(GUI・かんたん)
Cmd + , で設定 → 検索窓に git.autofetch → チェックを入れる。保存した瞬間に有効(再起動不要)。
オンにする(設定ファイル)
settings.json に "git.autofetch": true を1行追加。項目の区切りは末尾カンマ、最後の行はカンマ無し。
fetch は安全な操作
fetchは「見に行くだけ」で手元のファイルは一切変えない。だから自動で走らせて安全。実際に手元へ取り込むのは pull のときだけ。

触って確かめる:ステータスバー・シミュレーター

ボタンを押すと左下の記号がどう変わるか再現します。autofetch のオン/オフで「相手のpushにすぐ気づけるか」が変わるところを、切り替えて見比べてください。

autofetch:ON
main* 0 0
要点*(未コミット)↓N(相手のpush待ち)は別物。相手のコミットに気づきたいなら見るのは ↓N。そしてその ↓N を自動で出すのが autofetch=オン推奨

⑤ プルリクの出し方と、通知の流れ

PRは「git push した後」に出します。出し方は3通り、通知は「指定した相手」に届きます。

出し方(pushした後)

A. GitHubサイト初心者向き
リポジトリを開くと、push直後に黄色い帯で 「Compare & pull request」ボタン → 押す → タイトル/説明を書く → 右の Reviewers で見てほしい人を指定 → 緑の 「Create pull request」
B. VSCode
GitHub Pull Requests 拡張を入れていれば、pushすると「Create Pull Request」フォームが出る。記入して作成。
C. コマンドgh CLI
gh pr create。今日 PR #18 を作ったやり方。慣れると速い。

通知:誰に・どこへ届く?

レビュアーに指定した人例: haruto
GitHub右上の ベル🔔通知(github.com/notifications)+ 登録メールに届く。スマホのGitHubアプリにも(入れていれば)。
承認・コメントが付いたら→ 作成者(あなた)
今度は あなた のベル🔔+メールに返ってくる。やり取りはPRページに残る。
Slack
標準では来ない(GitHub↔Slack連携を入れていれば来る)。毎日GitHubを見ない相手には、Slackで一声が確実。
今日の例:PR #18 は haruto をレビュアー指定済み → haruto に GitHub通知+メールが飛んでいます

⑥ 知っておく言葉ミニ辞典

場所の言葉
リポジトリrepo
コード一式+全履歴の入れ物。GitHub側と手元の両方に同じものがある。
originオリジン
「いつものGitHub置き場」の標準のあだ名。push origin=GitHubへ上げる。
クローンclone
GitHubのリポジトリを自分のPCへ丸ごと初回コピー。参加時に1回。
作業ツリーworking tree
いま手元で編集中のファイル群。未コミット=「未保存の下書き」。
手元で保存する言葉
ステージングgit add
「次のコミットに含める分」を選ぶ。今日 middleware.ts だけ選べたのがこれ。
コミットcommit
選んだ変更をメッセージ付きで手元の履歴に保存。まだGitHubには無い。
ブランチbranch
作業用の枝。本流を汚さず変更を育てる場所。今日の mock-route-1055。
main本流
みんなが共有する正式な幹。完成したものだけが合流する。
手元 ⇄ GitHub
プッシュpush
手元のコミットをGitHubへ上げる。ここで初めて外に出る。
フェッチfetch
GitHub側の最新を「見るだけ」取得(手元はまだ変えない)。
プルpull
最新を取り込んで手元を更新。他人の変更を受け取るのがこれ。
オートフェッチgit.autofetch
VSCodeが裏で定期的にfetchする設定。初期はオフ。オンで相手のpushに ↓N で自動的に気づける。
チームで合流する言葉
プルリクエストPR
「mainに入れたい」提案+レビューの場。出してもmainはまだ変わらない。
レビュー / 承認approve
仲間が中身を確認しOKを出す。今日 haruto に依頼したのがこれ。
マージmerge
承認されたPRをmainへ合流。ここで初めて本流入り。
コンフリクトconflict
2人が同じファイルの同じ行を直すと発生。違うファイルなら起きない。
ブランチ保護branch protection
mainを勝手に変えさせない安全装置。今日マージが止まった理由。

⑦ つまずきポイントは2つだけ

コンフリクト(衝突):2人が同じファイルの同じ行を編集して合流すると発生。「どっち採用?」を人が選んで直す。→ 違うファイルなら起きない。
ブランチ保護でマージが止まる:mainは承認1つ無いとマージ不可。事故防止の良い仕組み。今日まさにこれで止まり、いま haruto の承認待ち。

⑧ 1回ぶんの流れ(コピペ用)

  1. 最新のmainを取り込む git pull
  2. 作業用ブランチを作る git checkout -b 機能の名前
  3. コードを編集(作業ツリー)
  4. 含める分を選ぶ git add ファイル名
  5. 手元に保存 git commit -m "何をしたか"
  6. GitHubへ上げる git push -u origin 機能の名前
  7. PRを作る(mainに入れたいと提案・レビュアー指定)
  8. レビュー・承認
  9. マージ(mainへ合流)
  10. 他の人は次の git pull で自動的に受け取る