GitHub と繋ぐ
テクノロジ系 / remote — リモートリポジトリ連携
GitHub と繋ぐ
— ローカルの履歴をクラウドに送る —
このトピックが終わると
- ローカルリポジトリと GitHub を紐付けられる
git pushでコードを GitHub に送れるgit pullで GitHub の変更を取り込めるgit cloneで既存リポジトリを手元に複製できる
章 1 — ローカルとリモート
2つのリポジトリが存在する
┌────────────────────┐ ┌────────────────────┐ │ ローカル │ │ リモート(GitHub) │ │ │ │ │ │ .git/ に履歴 │◄──────►│ クラウドに履歴 │ │ 自分の PC │ │ チームと共有 │ │ │ 同期 │ │ └────────────────────┘ └────────────────────┘
ローカルで commit → リモートに push が基本の流れ。
リモートとは
# 登録されているリモートを確認 git remote -v
origin git@github.com:username/my-project.git (fetch) origin git@github.com:username/my-project.git (push)
origin = リモートリポジトリの別名。
慣習的に最初のリモートは origin と呼ぶ。
章 2 — GitHub にリポジトリを作って繋ぐ
手順の全体像
1. GitHub でリポジトリを作成(Web)
↓
2. ローカルに remote を登録
↓
3. push して同期GitHub でリポジトリを作成
- github.com にログイン
- 右上「+」→「New repository」
- Repository name を入力
- 「Initialize this repository」のチェックは外す
(ローカルに既に履歴があるため)
- 「Create repository」をクリック
リモートを登録して push
# リモートを登録 git remote add origin git@github.com:username/my-project.git # 最初の push(-u でデフォルトのリモートを記憶) git push -u origin main
以降は git push だけで OK。
章 3 — push と pull
push:ローカル → リモート
ローカル ──push──→ GitHub commits commits(同期)
git push
commit していない変更は push されない。
push の前に commit が必要。
pull:リモート → ローカル
GitHub ──pull──→ ローカル commits commits(同期)
git pull
チームメンバーの変更を取り込む時に使う。
作業前に pull する習慣をつける。
よくあるエラー:push が拒否される
! [rejected] main -> main (non-fast-forward)
原因: リモートの方がローカルより進んでいる。
# まず pull して最新を取り込む git pull # 競合がなければそのまま push できる git push
fetch と pull の違い
git fetch ──→ リモートの情報を取得するだけ(ローカルは変わらない) git pull ──→ fetch + merge(取得して、すぐ統合する)
# fetch: 確認してから手動でマージ git fetch git diff main origin/main # 差分を確認 git merge origin/main # 問題なければマージ # pull: 取得 + マージを一発でやる git pull
fetch を使う場面
チームメンバーが push した ↓ git fetch ↓ git diff main origin/main ← 「何が変わったか」を確認してから ↓ git merge origin/main ← 問題なければ統合
変更内容を先に確認したい時は fetch。
慣れてきたら状況に応じて使い分ける。
章 4 — clone
clone:リモートをローカルに複製
GitHub ──clone──→ ローカル リポジトリ全体 履歴ごとコピー
git clone git@github.com:username/my-project.git
- 履歴が全て手元に来る
remote addは不要(自動でoriginが設定される)- チームに参加するときや、自分の別 PC で作業するときに使う
まとめ
git remote add リモートを登録 git push ローカル → GitHub に送る git pull GitHub → ローカルに取り込む git clone リモート全体を複製する
→ 次のトピック branch で並行作業を安全にする