Help us understand the problem. What is going on with this article?

【古い情報です】 pull は本当に fetch + merge なの?

※ 【追記】もうだいぶ古い情報です。

Git の pull は fetch + merge と同じというのをよく目にしますが、自分の中では違う気がしていて混乱しているので整理してみます。
認識が誤っている点などがございましたら、ご指摘いただければ幸いです。

3種類のブランチ

この記事では Git の 3 種類のブランチを以下のように表現します。

  • リモートブランチ
  • トラッキングブランチ
  • ローカルブランチ

リモートブランチ

リモートのリポジトリで定義されているブランチのことを指します。

トラッキングブランチ

リモートブランチを追跡するローカルリポジトリで定義されているブランチを指します。

ローカルブランチ

ブランチを切ったり、コミットなどをしていく実際に作業をするローカルリポジトリで定義されているブランチを指します。
これらを図にすると以下のような感じです。

1.png

fetch + merge の挙動

git fetch はリモートブランチの内容を取得し、トラッキングブランチに反映します。
git fetch originを実施した場合は以下の図のようになります。

3.png

git merge でトラッキングブランチをローカルブランチに反映します。
git merge origin/masterを実施した場合は以下の図のようになります。

5.png

このように fetch + merge をすると、トラッキングブランチを経由してリモートブランチの内容をローカルブランチに反映させることができます。

pull の挙動

git pull はリモートブランチの内容を直接ローカルブランチに反映します。
git pull origin masterを実施した場合は以下の図のようになります。

7.png

前述した fetch + merge とは異なり、pull の場合はトラッキングブランチにはリモートブランチの内容が反映されていません。
ですので、pull は fetch + merge と同じであると表現するのは違う気がしています。

追記 (2014/11/28)

上記の調査で動作確認したのはgit pull origin <ブランチ名>だけだったのですが、git pull originだとトラッキングブランチにもリモートの内容が反映されます。

なので、git pull originは fetch + merge と同じ挙動であるという表現は誤っていないと思います。

このように自己解決しましたが、ログとして文章はこのまま残しておきます。

追記 (2019/11/13)

git version 2.12.0 では git pull origin master でも origin/master が更新されているというコメントをいただきました。

現状は pull の挙動についてはこの記事の情報は参考になりませんが、3種類のブランチがあることの理解になれば幸いです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away