🫗
[ Git ] リモートブランチの内容を作業ブランチに取り込みたい(git pullとgit fetchの違い)
git pullとgit fetchの違い
リモートリポジトリの変更を手元の作業ブランチに取り込む方法として
git pull
とgit fetch
という2つのコマンドがあります
結局何が違うの〜〜と初期に悩んでいた記憶があるのでそちらも残していきます
git fetch と git pull の違い
git fetch
- リモートの情報を取得するだけで、ローカルのブランチには影響を与えません
- 変更内容を確認してから取り込むことができます
- コンフリクトに慣れていない方は一旦なれるまでこちらが良いかなと
git pull
- リモートの情報を取得し、自動的にマージまで行います
-
git fetch
+git merge
を1つのコマンドで実行する形 - コンフリクトが発生する可能性があります
git fetchを使用した作業手順
- リモートの最新情報を取得
git fetch origin
- 変更内容の確認
# 変更内容の確認
git diff main origin/main
# ログの確認
git log main..origin/main
- 問題なければマージを実行
git merge origin/main
git pullを使用した作業手順
- リモートの最新情報を取得してマージ
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