git fetch
リモートリポジトリの変更を取得しますが、ローカルのブランチには自動でマージしません。変更内容を確認してから統合したいときに使います。
構文
git fetch [<remote>] [<branch>] git fetch はリモートリポジトリの変更をローカルに取得しますが、作業ツリーやブランチには自動でマージしません。「何が変わったか確認してからマージしたい」というときに使います。
git pull との違い
| コマンド | 動作 |
|---|---|
git fetch | リモートの変更を取得するだけ(作業ツリーは変更しない) |
git pull | git 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
複数のリモート(origin や upstream など)を登録している場合に便利です。
リモートで削除されたブランチを同期する
# リモートで消えたブランチをローカルのトラッキング情報からも削除
git fetch --prune
# 毎回自動で prune するよう設定する
git config --global fetch.prune true
定期的に --prune をかけると、削除済みのブランチが手元に残り続けることを防げます。
タグを取得する
# タグもあわせて取得
git fetch --tags
リモートにあるタグが自動で取得されない場合は --tags オプションを使います。