Git の Fetch コマンドの使い方
リモートレポジトリからファイルをダウンロードするために必要な Git の Fetch コマ ンドの使い方を紹介します.
git fetch
はリモートレポジトリからファイルをダウンロードしますが, ローカルレポジトリのファイルは変更しません.
あくまでリモートの情報を更新するだけです.
リモートでどんなコミットが作られたとか, どんなブランチが作られたとかそういう情報を更新する目的で使われます.
なので git fetch
を使う場合は, 前提として git remote add
などであらかじめリモートを登録している必要があります.
他の人とコラボレートしている場合は, 他の人がどういうコミットをしたのかを確認するために使われます.
Fetch コマンドの使い方
例えばリモートの名前が origin
で origin
のリモートの情報を取得する場合は次のようになります:
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
で他の人のコミットの内容を確認することもできます.
取得した origin
の master
ブランチの内容を確認したいという場合, 次のようになります:
git checkout origin/master
この場合 ‘detached HEAD’ という状態になります.
git fetch
で最新のコミットを取得し, git log
や git checkout
でコミットの内容を確認し, 取得したリモートのコミットをマージしてもいいと判断したら git merge
でそれらのコミットを現在のローカルのファイルにマージすることができます.
マージとは他のコミットを現在のコミットに合併させることです.
もしリモート origin
の master
ブランチを現在チェックアウトしている master
ブランチに合併させたいという場合, 次のようになります:
git merge origin/master
このように git fetch
は git merge
でマージする前に必要な前段階的なコマンドになります.
なので一連の流れとしては次のような感じになるかと思います:
git fetch
でリモートのコミットを取得するgit log
またはgit checkout
でそれらのコミット内容を確認するgit merge
でそれらのコミットを現在のブランチにマージする
もし git log
や git checkout
で確認する必要がなく, 直接リモートのコミットをマージさせたいという場合は git pull
を使うことができます.
git pull
は git fetch
と git merge
を一度に行ってくれるコマンドです.
まとめ
git fetch
はあくまでリモートの情報を取得するのみで, 現在のローカルレポジトリのファイルは一切変更されることはありません. git merge
を行う前に, リモートの情報を取得して最新のコミットをマージできるようにするためのコマンドです.
直接リモートのコミットをマージさせたいという場合は git pull
を使うことができます.
なので git fetch
は実行しても安全なコマンドですが, 一方の git pull
は場合によってはマージコンフリクトが発生する場合があるので, その点は注意する必要があります.
git fetch
はリモートの最新情報を取得する上で欠かせないコマンドです.
関連記事
Git の Pull コマンドの使い方2018.06.07
git rebase でヒストリを直線的にする方法と使う時の注意点2018.08.13
Git のコミット履歴を大胆に書き換えるなら git rebase -i がオススメ2018.08.23
Git のトラッキングブランチの確認と設定方法2018.08.11
Git の Push コマンドの使い方2018.06.11