べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【GitHub】リモートリポジトリからデータを取得する【fetchを使った方法を解説】

Git Programming Basic

こんにちは、ちくたっく(@tictak_py)です。

今回は、gitコマンド「fetch」を使ってリモートリポジトリのデータを取得する方法を紹介していきます。

こんな方に読んで欲しい記事です

  • リモートリポジトリから「fetch」コマンドでデータを取得したい方
  • GitHubで使われている基本的なコマンドを学んでいきたい方

まず最初にに全体イメージをお伝えしておくと、リモートリポジトリ(GitHub)からデータを取得する方法は主に2つあります。1つが今回紹介する「fetch」コマンド、もう1つが「pull」コマンドです。

両者の違いをざっくり説明すると、最終的にリモートリポジトリのデータをローカルに反映させる点では共通していますが、「fetch」コマンドでは2段階のプロセス(git fetch→git merge)が必要であるのに対して、「pull」コマンドでは1段階のプロセス(git pull)で済む点が主な相違点です。

今回は、GitHub上で新規ファイルを作成し、そのデータを「fetch」コマンドを使って取り込む方法を紹介していきます。

【GitHub】「fetch」コマンドでデータを取得する

【事前準備】GitHubに新規ファイルを作成

まずは、現状の僕の環境を確認しておきます。
(以前のgit関連記事の名残があるので以下のようになっています。)

【参考】ワークツリーの状況確認
【参考】GitHubの状況確認

本来であれば、自分以外の誰かがファイルをGitHubに上げて、それを自分のローカルに取り込んでいきますが、今回は便宜上「GitHubにファイルを新規作成」することで同じ状況を作り出していきます。

以下のようにGitHub上から新規ファイルを作成することが可能です。

GitHub上で新規ファイルの作成

ファイル名と記載内容は何でもいいですが、今回は「new-fetch」というhtmlファイルを作成し、h1タグとpタグを使って以下のような内容を記載しておきます。

新規ファイルの記載内容

画面を下にスクロールさせて、「Commit new file」をクリックします。

「Commit new file」をクリックしてファイルを追加

リポジトリのホーム画面に戻ると、以下赤枠のように新規ファイルが作成されていることがわかります。

新規作成したファイルの反映を確認

これで、GitHubに最新のファイルが追加され、自分のローカル(ワークツリー)には反映されていない状況が出来上がりました。今から「new-fetch.html」ファイルをローカルに反映していくことが目的です。

【ステップ①】「git fetch」コマンド|ローカルリポジトリへ反映

混乱しないように先にポイントだけまとめておきます。

  • 「fetch」コマンドを使うと、「ローカルリポジトリ」にデータが反映される
  • 「fetch」コマンドを使っても、ワークツリーにはデータが反映されていない(pullと大きく異なる点)
  • 「ローカルリポジトリ」から「ワークツリー」にデータを反映するには「merge」コマンドが必要

これを踏まえた上で、「git fetch」コマンドを使っていきます。
具体的には「git fetch <リモート名>」でリモートリポジトリのデータを取得することが可能です。

以下では「リモート名の確認」と「masterブランチにいることの確認」をした上でコマンド入力しています。

「git fetch」コマンドでリモートリポジトリのデータを取得

「リモートリポジトリのデータが取得出来たから、ワークツリーを確認してみよう」と思っても、ワークツリーには反映されていないことが以下コマンドからわかります(ここが留意点です)。

「new-fetch.html」ファイルがないことがわかる

「git fetchコマンドで取得したデータはどこに保存されているのか」と言うと、「リモートブランチ」という場所に保存されています(以下赤枠で囲まれた部分)。

「git branch」コマンドでリモートブランチを表示

本当にリモートブランチにGitHubから取得した「new-fetch.html」が存在するのかを確かめてみます。「git checkout」コマンドでブランチを切り替えて、「ls」コマンドで確認した結果が以下です。

リモートブランチに「new-fetch.html」が存在することを確認

確かに「new-fetch.html」が存在していることがわかりますね。
この後、「git merge」コマンドを使って、ワークツリーにデータを反映させていきます。

「途中に出てきたgit branchやgit checkoutのコマンドがわからない」という方は、以下記事を参考にしてみてください。

【ステップ②】「git merge」コマンド|ワークツリーに反映

次に「git merge」コマンドを使って「new-fetch.html」ファイルをワークツリーに反映させます。具体的には「git merge <リモート名> <ブランチ名>」でデータをマージ(統合)することが可能です。

コマンドを入力する前に、「git checkout」で「master」ブランチに戻るようにしてください。

「git merge」コマンドで「new-fetch.html」ファイルを取得

「merge」コマンドについて少し補足すると、先ほど確認したリモートブランチは「remotes/origin/master」となっていましたが、「remotes」部分は省略して「origin/master」とすることが一般的なので、上記でもそのようにしています。

「merge」コマンドを入力した後、「ls」コマンドでワークツリーを確認すると「new-fetch.html」が存在していることがわかります。また、「cat」コマンドでファイルの内容を確認してみると、GitHub上で設定したファイルと同じことも確認出来ます。

以上が、「fetch」コマンドと「merge」コマンドの簡単な使い方となります。

さいごに

今回は、リモートリポジトリのデータを取得する方法「fetch」コマンドについて紹介しました。

「fetch」コマンドを使う場合は、「merge」コマンドとセットで理解した方がいいと思うので、合わせて「merge」コマンドについて使えるようにしてみてください。

リモートリポジトリのデータを取得するもう一つの方法「pull」コマンドについても紹介しているので、こちらも良ければ参考にしてみてください。

では今回はこのへんで。