リモート

git pull

リモートリポジトリの変更を取得し、現在のブランチにマージします。git fetch + git merge を一度に行います。

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

オプション

フラグ 説明
--rebase マージの代わりに rebase で変更を取り込みます。コミット履歴が直線的に保たれます。
--no-rebase rebase を使わず、マージで変更を取り込みます(デフォルト動作)。
--ff-only Fast-forward マージのみ許可します。コンフリクトが発生する場合は失敗します。
--no-commit マージを実行しますが、コミットは自動的には作成しません。内容を確認してから手動でコミットできます。

git pullgit fetch(リモートの変更を取得)と git merge(ローカルに統合)を連続して実行するショートカットです。チーム開発では、作業を始める前に git pull で最新の状態に更新することが重要です。

基本的な使い方

# 現在のブランチのリモート追跡ブランチから取得してマージ
git pull

# リモートとブランチを明示的に指定
git pull origin main

git pull —rebase

git pull --rebase

--rebase を使うと、マージコミットの代わりに rebase で変更を取り込みます。

通常の git pull:
  ローカル: A → B → C
  リモート: A → B → D
  結果:     A → B → C → M (マージコミット)

                    D

git pull --rebase:
  結果: A → B → D → C (C が D の後に再適用)

個人のブランチでは --rebase を使うと履歴がきれいになります。

git fetch との違い

コマンド動作
git fetchリモートの変更を取得するだけ(作業ツリーは変更しない)
git pull取得してそのままマージ(作業ツリーが変わる)

確認してからマージしたい場合は git fetch を使います。

git fetch origin
git log origin/main..HEAD  # リモートと自分の差分を確認
git merge origin/main      # 確認後にマージ

コンフリクトが起きたら

# コンフリクトしているファイルを確認
git status

# ファイルを編集してコンフリクトを解決
# ...

# 解決したファイルをステージング
git add <file>
git commit

rebase 中のコンフリクトは git rebase --abort でキャンセルできます。