Menu
Coddy logo textTech

Git Fetch vs Pull

最終更新

git fetch はリモートから最新のコミットをダウンロードしますが、作業ブランチはそのままにしておきます。git pull は同じダウンロードを行い、その後すぐにそれらのコミットを現在のブランチにマージします。要するに:git pull = git fetch + git merge です。

飛び込む前に確認したいときは fetch を、統合する準備ができたら pull を使いましょう。両方をターミナルプレイグラウンドで試してみてください - ブラウザ内の本物のシェルです。

git fetch は新しいコミットをダウンロードして origin/main だけを更新し、あなたのブランチはそのまま。git pull はすぐにマージまで行います。

並べて比較

Behaviorgit fetchgit pull
リモートのコミットをダウンロードするはいはい
現在のブランチを変更するいいえはい
マージ競合を引き起こすことがあるいいえはい
相当するものダウンロードのみfetch + merge

構文

CommandWhat it does
git fetchすべてのリモートの変更をダウンロードし、マージはしない
git fetch origin mainリモートから 1 つのブランチだけを取得する
git pull現在のブランチにダウンロードしてマージする
git pull --rebaseダウンロードしてから、あなたのコミットを上にリベースする
git log HEAD..origin/mainfetch の後:何をマージすることになるか確認する

Git fetch vs pull よくある質問

git fetch と git pull の違いは何ですか?
git fetch は新しいコミットをダウンロードし、リモート追跡ブランチ(origin/main など)を更新しますが、作業ブランチは変更しません。git pull は同じ fetch を行い、その後新しいコミットを現在のブランチにマージします。つまり pull はファイルを変更し、fetch はリモートに関するあなたの認識を更新するだけです。
git pull は単なる fetch と merge の組み合わせですか?
はい。git pullgit fetch の後に、取得したブランチを現在のブランチへ git merge する処理の短縮形です。git pull --rebase を使うと、2 番目のステップは merge ではなく rebase になり、履歴が一直線に保たれます。
pull ではなく fetch を使うべきなのはいつですか?
入ってくる変更を統合する前に確認したいときは git fetch を使います - たとえば git fetch の後に git log HEAD..origin/main を実行して、何が新しいかを正確に確認します。リモートの変更をすでに信頼していて、単にブランチへマージしたいだけなら git pull を使います。
git fetch が競合を引き起こすことはありますか?
いいえ。fetch はリモート追跡ブランチを更新するだけで、作業ブランチやファイルには決して触れないため、マージ競合を生み出すことはできません。競合は merge のステップでのみ発生します - これは pull が自動的に行いますが、fetch は行いません。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ内の本物のシェルで git fetchgit pull を実行できます - インストールは不要です。Coddy の無料インタラクティブ Git コースでも、リモートの扱い方を段階的に学べます。
Coddy programming languages illustration

Coddy で Git を学ぼう

始める