🫗

[ Git ] リモートブランチの内容を作業ブランチに取り込みたい(git pullとgit fetchの違い)

2025/02/04に公開

git pullとgit fetchの違い

リモートリポジトリの変更を手元の作業ブランチに取り込む方法として
git pullgit fetchという2つのコマンドがあります
結局何が違うの〜〜と初期に悩んでいた記憶があるのでそちらも残していきます

git fetch と git pull の違い

git fetch

  • リモートの情報を取得するだけで、ローカルのブランチには影響を与えません
  • 変更内容を確認してから取り込むことができます
  • コンフリクトに慣れていない方は一旦なれるまでこちらが良いかなと

git pull

  • リモートの情報を取得し、自動的にマージまで行います
  • git fetch + git merge を1つのコマンドで実行する形
  • コンフリクトが発生する可能性があります

git fetchを使用した作業手順

  1. リモートの最新情報を取得
git fetch origin
  1. 変更内容の確認
# 変更内容の確認
git diff main origin/main

# ログの確認
git log main..origin/main
  1. 問題なければマージを実行
git merge origin/main

git pullを使用した作業手順

  1. リモートの最新情報を取得してマージ
git pull origin main

もしくは現在のブランチに対応するリモートブランチから取得する場合

git pull

git fetchを使うべき場合

  • リモートの変更内容を確認してから取り込みたい場合
  • 複数のブランチの更新を一度に確認したい場合
  • コンフリクトが発生する可能性が高い場合
  • チーム開発で慎重にマージを行いたい場合

git fetchのオプション

# 全てのリモートブランチの情報を取得
git fetch --all

# リモートで削除されたブランチの情報も更新
git fetch -p

git pullを使うべき場合

  • 単純な更新で、コンフリクトの可能性が低い場合
  • 個人開発で即座に更新を反映したい場合

git pullのオプション

# rebaseを使用してマージする
git pull --rebase

# 強制的にリモートの内容で上書き
git pull --force

Discussion