Git の Fetch コマンドの使い方


リモートレポジトリからファイルをダウンロードするために必要な Git の Fetch コマ ンドの使い方を紹介します.

git fetch はリモートレポジトリからファイルをダウンロードしますが, ローカルレポジトリのファイルは変更しません.

あくまでリモートの情報を更新するだけです.

リモートでどんなコミットが作られたとか, どんなブランチが作られたとかそういう情報を更新する目的で使われます.

なので git fetch を使う場合は, 前提として git remote add などであらかじめリモートを登録している必要があります.

他の人とコラボレートしている場合は, 他の人がどういうコミットをしたのかを確認するために使われます.

Fetch コマンドの使い方

例えばリモートの名前が originorigin のリモートの情報を取得する場合は次のようになります:

git fetch origin

このコマンドは origin の全てのブランチに関する情報を取得しますが, master ブランチの情報のみ取得することもできます:

git fetch origin master

もしくは origin に限らず, 全てのリモートの全てのブランチの情報を取得する場合は , 次のようになります:

git fetch --all

もし origin などのリモートをなにも指定しないと, 現在のブランチに上流のブランチが設定されていない限り, デフォルトで origin のリモートを取得します.

なのでそのような場合, 次のコマンドは:

git fetch origin

このように省略することもできます:

git fetch

Fetch コマンドを使った後

そのようにしてリモートの最新情報を取得したら, git log でどんなコミットを他の人がしてきたのかを確認することができます.

また git checkout で他の人のコミットの内容を確認することもできます.

取得した originmaster ブランチの内容を確認したいという場合, 次のようになります:

git checkout origin/master

この場合 ‘detached HEAD’ という状態になります.

git fetch で最新のコミットを取得し, git loggit checkout でコミットの内容を確認し, 取得したリモートのコミットをマージしてもいいと判断したら git merge でそれらのコミットを現在のローカルのファイルにマージすることができます.

マージとは他のコミットを現在のコミットに合併させることです.

もしリモート originmaster ブランチを現在チェックアウトしている master ブランチに合併させたいという場合, 次のようになります:

git merge origin/master

このように git fetchgit merge でマージする前に必要な前段階的なコマンドになります.

なので一連の流れとしては次のような感じになるかと思います:

  1. git fetch でリモートのコミットを取得する
  2. git log または git checkout でそれらのコミット内容を確認する
  3. git merge でそれらのコミットを現在のブランチにマージする

もし git loggit checkout で確認する必要がなく, 直接リモートのコミットをマージさせたいという場合は git pull を使うことができます.

git pullgit fetchgit merge を一度に行ってくれるコマンドです.

まとめ

git fetch はあくまでリモートの情報を取得するのみで, 現在のローカルレポジトリのファイルは一切変更されることはありません. git merge を行う前に, リモートの情報を取得して最新のコミットをマージできるようにするためのコマンドです.

直接リモートのコミットをマージさせたいという場合は git pull を使うことができます.

なので git fetch は実行しても安全なコマンドですが, 一方の git pull は場合によってはマージコンフリクトが発生する場合があるので, その点は注意する必要があります.

git fetch はリモートの最新情報を取得する上で欠かせないコマンドです.