Git Ready
リモートの最新を確認する - git fetch の使い方・オプション・サンプル

リモートの最新を確認する- git fetch

リモートから最新のデータを取得(フェッチ)します(マージはしない)。

概念図

git fetch diagram

構文

bash
git fetch [<remote>]

使用例

すべてのリモートから取得

bash
git fetch

originから取得

bash
git fetch origin

リモートで削除されたブランチの追跡参照を削除

bash
git fetch --prune

pull との違い

git pull は実質的に git fetch + git merge(または git rebase)を一度に実行するコマンドです。

違いを整理すると以下のようになります。

操作 git fetch git pull
リモートからデータ取得 する する
ローカルブランチにマージ しない する
安全性 高い(作業に影響なし) マージコンフリクトが発生する可能性
使い分け 確認してからマージしたい時 すぐに最新化したい時

「まず状況を見たい」ときは fetch、「すぐに取り込みたい」ときは pull と覚えると選びやすいです。

ハマりポイント:main と origin/main は別物

初心者が最もハマりやすいのが、ローカルブランチの main とリモート追跡ブランチの origin/main別のポインタであるという点です。

名前 実体 いつ動くか
main ローカルの作業ブランチ ローカルで commit / merge / pull したとき
origin/main リモートの状態をキャッシュした読み取り専用の参照 git fetch(または git pull)したとき

git fetch が更新するのは origin/main だけで、ローカルの main は一切動きません。

そのため fetch 後に git log しても「変わってないじゃん…」となりがちです。

実際には origin/main には新しいコミットが入っているので、git log origin/maingit log main..origin/main で確認できます。

「fetch したのに反映されない」と感じたときは、ローカルブランチにマージするステップを忘れていないかを確認してください。

bash
# リモートの最新情報を取得(ローカルの main は動かない)
git fetch origin

# origin/main にだけあるコミット = 未取り込みの変更
git log main..origin/main --oneline

# ローカルの main に実際に取り込む
git merge origin/main
# もしくは
git rebase origin/main

関連コマンド