【Git】git fetch と git pull の違いは何?

こんにちは!CODE CLUB965のKです!

今回は、git fetch と git pull の違いについて書こうと思います。
ちゃんと説明できますか?と聞かれたら意外と答えられない方も多いと思います。

答えに詰まった方は、ぜひ読んでください。

git fetch

リモートからローカルに最新のデータを持ってきます。
取得するだけで他は何もしません。

ちなみに、master ブランチでなく、origin/master ブランチに取り込まれます。

master ブランチと、origin/master ブランチの違いですが、

・「master」ブランチ
  ローカルの統合ブランチ。他のローカルの作業ブランチと繋がったもの。

・「origin/master」ブランチ
  ローカルにある、リモートのmasterブランチを追跡するリモート追跡ブランチ。

こんなところです。

ちょっと分かりにくいかもしれませんが、git fetchではこの「origin/master」ブランチで最新情報を受け取ります。
なので、git fetchして「origin/master」を最新にしたら、git merge で「origin/master」ブランチ →「master」ブランチに最新情報をマージする必要があります。

流れをまとめると、

git fetch
  ローカルの「origin/master」ブランチを最新にする
② git merge
  ローカルの「origin/master」ブランチ から ローカルの「master」ブランチに最新情報をマージする

この流れになります。

git pull

git pullは、上で説明した「git fetch」と「git merge」を同時に行うコマンドです。

そのため、リモートの「master」ブランチから、ローカルの「origin/master」ブランチを介して、ローカルの「master」まで一気に最新情報を取り込みます。

なので、「master」ブランチにマージまでしたくない時はgit fetchを使って下さい。
git pullすると大変なことになります。笑

ただ元にどせますので安心して下さい。
方法はいろいろあるかもしれませんが、一例としては、戻したいコミットのIDを調べて、「git reset --hard id」で元に戻せます。

この辺はまた別の記事で紹介できればと思います。

最後に

一応最後にコマンドの一例を載せておきます。

・git fetch

$ git fetch origin master
$ git merge origin/master

・git pull

$ git pull origin master

今回はこのコマンドについて説明した感じですね!

それでは、また!

Follow me!

【Git】git fetch と git pull の違いは何?” に対して1件のコメントがあります。

コメントは受け付けていません。