git fetch
コマンドの概要
リモートリポジトリを設置した場合、Gitはリモートリポジトリのブランチを上流ブランチとして追跡し、ローカルリポジトリを同期していく。リポジトリ内に変更を加えるときは、ローカルリポジトリに変更を加えたのをリモートリポジトリに反映させ、リモートリポジトリを直接変更する動作はしない。
git fetch
はリモートリポジトリとの同期のためにリモート追跡ブランチにリモートリポジトリの内容を反映するコマンドである。
上流ブランチ
ブランチは特定のコミットを示すポインタであり、リモートリポジトリにおいても同様に特定のコミットを指している。
ローカルブランチとリモート上のブランチをマージもしくはリベースすることにより、ローカルとリモートが同期されるが、その同期対象として指定されたブランチが上流ブランチである。
ブランチは特定のコミットを示すポインタであり、リモートリポジトリにおいても同様に特定のコミットを指している。
ローカルブランチとリモート上のブランチをマージもしくはリベースすることにより、ローカルとリモートが同期されるが、その同期対象として指定されたブランチが上流ブランチである。
git clone
を実行したとき、origin
というリモートリポジトリ上にmaster
ブランチが存在しており、ローカルにmaster
ブランチが作成される。ローカルのmaster
ブランチの上流ブランチとしてorigin
のmaster
ブランチが指定され、ローカルリポジトリ内にorigin/master
というリモート追跡ブランチが設定される。リモート追跡ブランチ
上流ブランチに設定したリモートブランチを参照するためにローカルリポジトリにリモート追跡ブランチが設定される。ローカルリポジトリに上流ブランチのコピーがリモート追跡ブランチとして存在していると考えてよい。上流ブランチとローカルブランチの同期はリモート追跡ブランチを通じて行われる。
上流ブランチに設定したリモートブランチを参照するためにローカルリポジトリにリモート追跡ブランチが設定される。ローカルリポジトリに上流ブランチのコピーがリモート追跡ブランチとして存在していると考えてよい。上流ブランチとローカルブランチの同期はリモート追跡ブランチを通じて行われる。
コマンドの使い方
リモートリポジトリ上のすべてのブランチを対象としてリモート追跡ブランチに展開するには
1$ git fetch origin
現在チェックアウトしているブランチの上流ブランチを対象としてリモート追跡ブランチに展開するには
1$ git fetch
origin
のmain
ブランチをリモート追跡ブランチに展開するには
1$ git fetch origin main
リモート追跡ブランチにはFETCH_HEAD
でアクセスできる。