コンテンツにスキップ

1.3 リモートリポジトリとの連携

Git はローカルだけでも動きますが、チーム開発では リモートリポジトリ(GitHub)との連携 が欠かせません。
このセクションでは、リモートとのやり取りに使うコマンドを深掘りしていきます 🌐


リモートリポジトリ とは、ネットワーク上にあるリポジトリのことです。
GitHub、GitLab、Bitbucket などのサービスがリモートリポジトリをホスティングしています。

flowchart LR
    subgraph "あなたのPC"
        L["💾 ローカルリポジトリ"]
    end
    subgraph "GitHub"
        R["☁️ リモートリポジトリ
(origin)"] end L -- "git push →" --> R R -- "← git fetch / pull" --> L style L fill:#FFF3E0,stroke:#FB8C00,color:#E65100 style R fill:#F3E5F5,stroke:#8E24AA,color:#4A148C
Terminal window
# 登録されているリモートの一覧
git remote -v
origin https://github.com/your-org/your-repo.git (fetch)
origin https://github.com/your-org/your-repo.git (push)
Terminal window
# リモートを追加
git remote add upstream https://github.com/original/repo.git
# リモートのURLを変更
git remote set-url origin https://github.com/new-org/repo.git
# リモートを削除
git remote remove upstream
# リモートの詳細情報を表示
git remote show origin

1.1 でも少し触れましたが、ここでもう少し深く理解しましょう。

upstream とは、ローカルブランチが「追跡している」リモートブランチのことです。
この紐づけがあることで、git pushgit pull引数なし で実行できます。

flowchart LR
    subgraph "ローカル"
        LB["feature/login
(ローカルブランチ)"] end subgraph "リモート (origin)" RB["origin/feature/login
(リモート追跡ブランチ)"] end LB -- "upstream設定
git push -u" --> RB RB -- "自動で対応" --> LB style LB fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style RB fill:#F3E5F5,stroke:#8E24AA,color:#4A148C
Terminal window
# 初回 push 時に upstream を設定(最も一般的)
git push --set-upstream origin feature/login
# 略記
git push -u origin feature/login
# 2回目以降は引数不要
git push
git pull
Terminal window
# 各ブランチの追跡情報を表示
git branch -vv
develop e4f5g6h [origin/develop] ヘッダーのデザインを修正
* feature/login a1b2c3d [origin/feature/login] ログインページ追加
main m0n1o2p [origin/main] 初期コミット

[origin/feature/login] の部分が、追跡先のリモートブランチです。


ここが 混乱しやすいポイント です。
図を見ながらしっかり理解しましょう。

fetch は、リモートの最新情報を ダウンロードするだけ です。
作業ディレクトリやローカルブランチには 一切影響しません

Terminal window
git fetch origin

git pull ─ 取ってきてマージまでする

Section titled “git pull ─ 取ってきてマージまでする”

pull は、fetch + merge一度に行う コマンドです。

Terminal window
# この2つは同じ動作
git pull origin develop
# ↓ と同じ
git fetch origin
git merge origin/develop
flowchart TD
    subgraph "git fetch"
        R1["☁️ リモート"] -- "① 最新情報を取得" --> T1["🔍 リモート追跡ブランチ
(origin/develop)"] T1 -. "② 作業ディレクトリは
変わらない" .-> W1["🖥️ 作業ディレクトリ"] end subgraph "git pull" R2["☁️ リモート"] -- "① 最新情報を取得" --> T2["🔍 リモート追跡ブランチ
(origin/develop)"] T2 -- "② 自動でマージ" --> W2["🖥️ 作業ディレクトリ"] end style R1 fill:#F3E5F5,stroke:#8E24AA,color:#4A148C style R2 fill:#F3E5F5,stroke:#8E24AA,color:#4A148C style T1 fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style T2 fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style W1 fill:#E8F5E9,stroke:#43A047,color:#1B5E20 style W2 fill:#E8F5E9,stroke:#43A047,color:#1B5E20
状況おすすめ理由
リモートの状況を確認したいfetch安全に確認できる
作業開始前に最新化したいpull手軽に最新化
競合が起きそうなときfetch → 確認 → merge慎重に対応できる
CI/CD などの自動化pullシンプルに統一

pull 時に --rebase をつけると、merge の代わりに rebase で統合します。
直線的な履歴を保ちたいチームでよく使われます。

Terminal window
# merge の代わりに rebase で統合
git pull --rebase origin develop
# デフォルトの pull を rebase にする設定
git config --global pull.rebase true

リモートブランチの一覧を見る

Section titled “リモートブランチの一覧を見る”
Terminal window
# リモートブランチの一覧
git branch -r
# ローカルとリモートの両方を表示
git branch -a
remotes/origin/develop
remotes/origin/feature/login
remotes/origin/feature/signup
remotes/origin/main

不要になったリモートブランチを掃除する

Section titled “不要になったリモートブランチを掃除する”

マージ済みのブランチが GitHub 上で削除されても、ローカルの追跡情報は残ったままです。
定期的にお掃除しましょう。

Terminal window
# リモートで削除されたブランチの追跡情報を削除
git fetch --prune
# 略記
git fetch -p
# デフォルトで prune を有効にする
git config --global fetch.prune true

コマンド用途
git remote -vリモートの一覧を表示
git push -u origin <branch>upstream を設定して push
git fetch originリモートの最新情報を取得(マージしない)
git pull origin <branch>リモートの最新を取得+マージ
git pull --rebaseリモートの最新を取得+rebase
git branch -vv追跡ブランチの確認
git fetch --prune削除済みリモートブランチの追跡情報を削除