リモートリポジトリ

fetch

pullを実行すると、リモートリポジトリの内容のマージが自動的に行われてしまいます。しかし、単にリモートリポジトリの内容を確認したいだけの時はマージをしたくない場合もあります。そのような時はfetchを使用します。

fetchを実行すると、リモートリポジトリの最新の履歴の取得だけを行うことができます。取得したコミットは、名前の無いブランチとして取り込まれます。このブランチはFETCH_HEADという名前でチェックアウトすることができます。

例えば、ローカルリポジトリとリモートリポジトリのoriginのそれぞれに、Bから進んだコミットがある状態でfetchを行うと、下の図のような履歴になります。

ローカルリポジトリとリモートリポジトリのoriginのそれぞれに、Bから進んだコミットがある状態でfetch

この状態から、リモートリポジトリの内容をローカルリポジトリのmasterに統合する場合は、FETCH_HEADをマージするか、改めてpullを実行します。

FETCH_HEADをマージ

マージを行うと、pullの時と同じ履歴になります。
実は、pullというのは内部でfetch + mergeをしているからです。