git pullとgit fetchの違いは、リモートリポジトリから取得したブランチ情報(ソースコードなど)をローカルブランチにマージ(統合)するかどうかになります。
リモートリポジトリのブランチ情報を、ローカルブランチに統合するコマンドは下記です。
fetchの場合
$ git fetch origin master
$ git merge origin/master
pullの場合
$ git checkout master
$ git pull origin master上記のコマンドでは、両方ともorogin(リモートリポジトリ名)のmasterブランチの情報を取得します。
git fetchでブランチ情報の統合
前述しましたが、git fetchを行った場合に、ローカルリポジトリの作業ブランチ(ローカルブランチ)には統合されません。
git fetchを行った場合は、リモートリポジトリにある最新のブランチ情報をリモート追跡ブランチに反映させます。
リモート追跡ブランチ(Remote-tracking branch)とは、ローカルリポジトリにあるリモートリポジトリの状態を追跡するブランチのことです。
ただ、ローカルリポジトリは常にネットワークに接続しているわけでありませんので、リモートリポジトリのブランチとリモート追跡ブランチが常に同じ状態ではありません。
誰かがブランチに変更をpushすると、状態が異なってしまうということです。
この状況を解消するためにfetchを行います。
$ git fetch origin masterリモート追跡ブランチは、「git branch -a」コマンドで確認することができます。
※ master
remotes/origin/master
今までは存在しなかった赤文字のブランチが生成されます。
リモート追跡ブランチの保存先はローカルリポジトリの「remotes/同リモート/同ブランチ」になります。
この状態ではワークツリーに変化が見られません。
下記のコマンドで、ワークツリーの情報をリモート追跡ブランチの情報と切り替えて、確認することができます。
# git checkout remotes/origin/mastergit pullでブランチ情報の統合
pullはfetchとmergeを一度に行うコマンドです。
つまり、リモートリポジトリのブランチ情報をリモート追跡ブランチに更新して、ワークツリー(ローカルブランチ)の情報を統合します。

ただ、注意点としては、ワークツリーの現在のブランチに自動的に統合されることです。
「hoge」というリモートリポジトリのブランチ情報をpullしたときに、ワークツリーのブランチが「master」だった場合、masterbブランチに自動的に統合されてしまいます。
これを避けるためには、checkoutコマンドなどで、ワークツリーのブランチを合わせておく必要があります。