git pull と fetch の違いって何?

最終更新:2020-04-12 by Joe

混同しやすい、git pull と git fetch の違いについてです。

git pull と git fetch の違い

git pull と git fetch の違いは、ずばり、「取得したブランチ情報をローカルブランチにマージするかどうか?」です。

git pull は、まさしく、下記のコマンドのショートハンドなのです。

// git pull origin master とほぼ同義なコマンド
$ git fetch origin master
$ git merge FETCH_HEAD

git pull が実行するコマンド

FETCH_HEAD とは、git fetch 実行時に保存される参照情報です。 git pull 実行時に使うため .git/FEACH_HEAD に書き込まれています。

2番目の、git merge FETCH_HEAD により、参照が移動します。

FETCH_HEADのマージ

FETCH_HEAD に対して Fast Forward 出来ない場合、git pull はエラーで停止します。その場合は、手動でマージする必要があります。

無理やり上書きしたい場合は、こちらをご覧ください。

git pull, fetch の参考情報

git pull と fetch に関して、詳しくはこちらの記事にまとめています。

公式ドキュメントもリンクしておきます。