リモートの変更を取り込む - git pull

リモートから変更を取得してマージします。

概念図

git pull diagram

構文

bash
git pull [<remote>] [<branch>]

使用例

現在のブランチを更新

bash
git pull

リベースで統合

bash
git pull --rebase

fetch + merge / rebase との対応

git pull は便利ですが、内部的には git fetch の後にマージまたはリベースを実行しているだけです。

  • 通常の git pull

    git fetch origingit merge origin/main と同等です。

  • git pull --rebase

    git fetch origingit rebase origin/main と同等です。履歴を直線的に保ちたいときに使います。

リモートの変更内容を確認してからマージしたい場合は、git pull 一発ではなく git fetch で分けて実行すると安全です。

pull によって意図せずマージコミットが作られる問題とその対処法は、ガイド pull で不要なマージコミットができてしまう問題 を参照してください。

注意点

  • 未コミットの変更がある状態で pull しない

    実行する前に、作業中の変更がある場合はコミットするか git stash で退避してください。未コミットの変更がある状態で pull すると、コンフリクトが発生したり、変更が失われたりする可能性があります。

  • --rebase はプッシュ済みコミットに使わない

    --rebase オプションは履歴をきれいに保てますが、まだプッシュしていないローカルコミットがある場合にのみ使用してください。既にプッシュ済みのコミットをリベースすると、チームメンバーに影響を与えます。

  • pull.ff only 設定で事故を防ぐ

    git config --global pull.ff only を設定しておくと、fast-forward できない pull はエラーになります。意図しないマージコミットの混入を防げます。

関連コマンド