【Git】pullは何をしているのか
目次
pullとは
pullとは、ローカルリポジトリとリモートリポジトリを同期させる行為です。
git push とgit pull は対になっているコマンドに感じますが、実際に内部で行っている処理は、git pullのほうが複雑です。
git pushはクリーン(fast-forward)マージを強制されます。しかし、git pullの場合はクリーンマージができないケースがあります。(内部でコミットしている場合)
fetchとmerge
- fetch : リモートリポジトリのリファレンス(ブランチやタグ)をローカルリポジトリのリモート追跡ブランチ(FETCH_HEADの位置)を更新します。
- merge : 今いるブランチへ他のブランチを取り込みます。
pullは内部で何をしているのか
git pullでは、git fetchからgit merge FETCH_HEADの順で処理をしています。
なぜ、mergeが発生するのかというと、gitではリモートの状態をローカル環境でリモート追跡ブランチとして、管理しています。このリモート管理ブランチの先頭をFETCH_HEADとして定義しています。
つまり、リモート追跡ブランチを今いるブランチへマージすることで、リモートリポジトリのFETCH_HEAD`の次のコミットを作ることで、ブランチを同期させています。
【Git】pullは何をしているのか
https://daiki-iijima.github.io/2021/04/02/【Git】pullは何をしているのか/




