gitのfetchとpullの違いについて
小粋空間 » github » gitのfetchとpullの違いについて
gitのfetchとpullの違いについて調べてみました。
1.ローカルブランチとトラッキングブランチ
fetchとpullの違いについて説明する前に、ローカルブランチとトラッキングブランチについて説明します。
gitのリポジトリには、
- リモートリポジトリ
- ローカルリポジトリ
の2つがあり、さらにローカルリポジトリには、
- ローカルブランチ
- トラッキングブランチ
の2つのブランチがあります。
トラッキングブランチはリモートブランチの変更に追従し、ローカルブランチとリモートブランチを結びつける役割を果たしています。
"origin/master"がトラッキングブランチに該当します。
図にまとめると次のようになります。
2.fetchとは
fetchは「トラッキングブランチの更新」です。
$ git fetch
を実行すると、更新されるのはトラッキングブランチのみです。
ローカルブランチにも変更を反映するにはmergeが必要です。
3.pullとは
pullは「トラッキングブランチの更新とローカルブランチのマージ」です。
$ git pull origin master
を実行すると、トラッキングブランチが更新され、ローカルブランチにマージされます。
まとめると、
- fetch:トラッキングブランチの更新
- pull:トラッキングブランチの更新とローカルブランチのmerge
ということですね。