Gitを始めよう!(入門)
3min
リモートリポジトリから変更をfetch/pull(git fetch, git pull)

git fetch, git pullとは?

git fetch, git pullは、git pushと対になっている。
変更をリモートリポジトリにpush(git push)
git pushが、ローカルブランチをリモートリポジトリに送り込む(プッシュする)ことであるのに対して、git fetch, git pullは、リモートリポジトリからローカルに変更を持ってくることです。

git fetch

fetch/pullの違いをみていきましょう。

 git fetchは、リモートリポジトリから全ての変更を取得しますが、ローカルにはマージしません。つまり、fetchした時点ではローカルでファイルを開いても何も変更がない状態となります。

git pull

git pullは、リモートリポジトリから変更を取得し、ローカルにマージします。

 ・fetch -> すべての変更の取得:○、 カレントブランチの変更の取得: ○、 マージ: ×
 ・pull -> すべての変更の取得:×、 変更の取得: ○、 マージ: ○

どちらを使うのが良いのか

ローカルブランチに変更を取り込む手順として、下記の二つがあります。
git fetch git pull git pull
筆者のおすすめは、前者(fetch & pull)です。後に、『基礎編』でリポートリポジトリからローカルにないブランチを持ってくる方法を紹介しますが、その際、fetchを忘れると最新でないブランチを持ってきてしまうことになります。
 そうしたトラブルを避けるためにも、 リモートリポジトリから変更を持ってくる時にはfetchする癖をつけておくのが良いです。
ちなみにリモートリポジトリからローカルにないブランチを持ってくる方法は下記です。
#git branch 任意のブランチ名 origin/リモートブランチ名 git branch hoge-branch origin/hoge-branch
任意のブランチ名となっていますが、通常はリモートブランチ名と同名にします。
そろそろ基礎編も終わりだよ。
チーム開発が始まると、pushとfetch & pullは多用するからしっかりマスターしよう!
Octocat