git fetch - リモートリポジトリの情報取得
git fetchコマンドを使用するとリモートリポジトリの情報を取得することができます。感覚的には、リモートリポジトリを、ローカルリポジトリへ同期すると考えてください。
# リモートリポジトリの情報を取得 git fetch
git fetchを使うのはどのようなときですか?
「git pull」コマンドを使うと「git fetch」を行うことに加えて、現在のブランチに指定したリモートリポジトリのブランチの変更内容をマージしてくれます。
ですので「git pull」よりも「git fetch」を使いたい場合は、現在のブランチにリモートブランチの変更内容をマージしたくない場合です。
他の開発者が作ったリモートにあるブランチを元に、ローカルのブランチを作ったり、手動でリモートリポジトリのブランチをマージしたいときなどがあります。
また、安全のために「git pull」をまったく使わずに「git fetch」とマージ作業を分けて行うという開発者の方もおられます。
git fetchで知っておいた方が良いことを教えてください
タグは、同期されます。
リモートブランチとローカルブランチを区別してください。git fetchをすると、リモートブランチを、ローカルリポジトリの中に取り込みますが、リモートブランチとローカルブランチは異なるものです。
リモートブランチは「origin/foo」のように先頭に「origin」がついています。
git branchコマンドで、ローカルブランチ表示してみましょう。
# ローカルブランチの表示 git branch
ローカルブランチの出力結果の例です。
main foo bar
git branchコマンドの「-r」オプションで、リモートブランチを表示してみましょう。
# リモートブランチの表示 git branch -r
リモートブランチの出力結果の例です。
origin/foo origin/baz
ややこしいのは、リモートブランチとは、リモートリポジトリにあるブランチのことではなくって、ローカルリポジトリの中にある、リモートリポジトリにあるブランチのコミットを指し示すブランチだということです。
ややこしいですが「origin/foo」「origin/baz」は「git fetch」により、ローカルリポジトリに取り込まれたと、考えてください。