リモート

git fetch

リモートリポジトリの変更を取得しますが、ローカルのブランチには自動でマージしません。変更内容を確認してから統合したいときに使います。

構文 git fetch [<remote>] [<branch>]

オプション

フラグ 説明
--all すべてのリモートから変更を取得します。複数のリモートを利用している場合に便利です。
--prune リモートで削除されたブランチのトラッキング情報をローカルからも削除します。
--dry-run 実際には何も変更せず、実行結果のシミュレーションを表示します。
-t, --tags タグもあわせて取得します。通常のフェッチではタグが自動取得されないことがあります。

git fetch はリモートリポジトリの変更をローカルに取得しますが、作業ツリーやブランチには自動でマージしません。「何が変わったか確認してからマージしたい」というときに使います。

git pull との違い

コマンド動作
git fetchリモートの変更を取得するだけ(作業ツリーは変更しない)
git pullgit fetch + git merge を一度に実行

「確認してから統合する」場合は git fetch → 差分確認 → git merge の流れが安全です。

基本的な使い方

# デフォルトのリモート(origin)から取得
git fetch

# リモートを指定して取得
git fetch origin

# 特定のブランチだけ取得
git fetch origin main

変更を確認してからマージする

# まずリモートの変更を取得
git fetch origin

# リモートの main と自分のブランチの差分を確認
git log origin/main..HEAD      # 自分だけのコミット
git log HEAD..origin/main      # リモートだけのコミット
git diff HEAD origin/main      # ファイルの差分

# 問題がなければマージ
git merge origin/main

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

# すべてのリモートを一括取得
git fetch --all

複数のリモート(originupstream など)を登録している場合に便利です。

リモートで削除されたブランチを同期する

# リモートで消えたブランチをローカルのトラッキング情報からも削除
git fetch --prune

# 毎回自動で prune するよう設定する
git config --global fetch.prune true

定期的に --prune をかけると、削除済みのブランチが手元に残り続けることを防げます。

タグを取得する

# タグもあわせて取得
git fetch --tags

リモートにあるタグが自動で取得されない場合は --tags オプションを使います。