git fetch

コマンドの概要

リモートリポジトリを設置した場合、Gitはリモートリポジトリのブランチを上流ブランチとして追跡し、ローカルリポジトリを同期していく。リポジトリ内に変更を加えるときは、ローカルリポジトリに変更を加えたのをリモートリポジトリに反映させ、リモートリポジトリを直接変更する動作はしない。 git fetchはリモートリポジトリとの同期のためにリモート追跡ブランチにリモートリポジトリの内容を反映するコマンドである。

上流ブランチ
ブランチは特定のコミットを示すポインタであり、リモートリポジトリにおいても同様に特定のコミットを指している。
ローカルブランチとリモート上のブランチをマージもしくはリベースすることにより、ローカルとリモートが同期されるが、その同期対象として指定されたブランチが上流ブランチである。
git cloneを実行したとき、originというリモートリポジトリ上にmasterブランチが存在しており、ローカルにmasterブランチが作成される。ローカルのmasterブランチの上流ブランチとしてoriginmasterブランチが指定され、ローカルリポジトリ内にorigin/masterというリモート追跡ブランチが設定される。
リモート追跡ブランチ
上流ブランチに設定したリモートブランチを参照するためにローカルリポジトリにリモート追跡ブランチが設定される。ローカルリポジトリに上流ブランチのコピーがリモート追跡ブランチとして存在していると考えてよい。上流ブランチとローカルブランチの同期はリモート追跡ブランチを通じて行われる。

コマンドの使い方

リモートリポジトリ上のすべてのブランチを対象としてリモート追跡ブランチに展開するには

1$ git fetch origin

現在チェックアウトしているブランチの上流ブランチを対象としてリモート追跡ブランチに展開するには

1$ git fetch

originmainブランチをリモート追跡ブランチに展開するには

1$ git fetch origin main

リモート追跡ブランチにはFETCH_HEADでアクセスできる。