【GitHub】リモートリポジトリからデータを取得する【pullを使った方法を解説】
こんにちは、ちくたっく(@tictak_py)です。
今回は、gitコマンド「pull」を用いてリモートリポジトリのデータを取得する方法を紹介していきます。
前回「fetch」コマンドを用いてリモートリポジトリのデータを取得する方法を紹介したので、今回はもう一つの方法「pull」を使ってコマンドの挙動を確認していくことを目的としていきます。
「fetch」コマンドの記事を見てからこの記事を読んでもらった方が違いがより分かると思うので、良ければ参考にしてください。
【GitHub】リモートリポジトリからデータを取得する【fetchを使った方法を解説】
GitHubのようなリモートリポジトリからデータを取得する方法には大きくわけて2つの方法があります。今回はそのうちの一つ「fetch」を使った方法を解説した記事です。具体的な挙動についても紹介しているので参考にしてみてください。
こんな方に読んで欲しい記事です
- リモートリポジトリから「pull」コマンドを使ってデータを取得したい方
- GitHubで使われている基本的なコマンドを学んでいきたい方
今回も「fetch」コマンドの時と同じく、GitHub上でファイルを新規作成し、それをローカルに取り込むような形でコマンドを確認していきます。
【GitHub】「pull」コマンドでデータを取得する
【事前準備】GitHubに新規ファイルを作成
まずは、現状の僕の環境を確認しておきます。
ここは参考程度ですが、以前のgit関連記事の名残があるので以下のようになっています。
本来であれば、自分以外の誰かがファイルをGitHubに上げて、それを自分のローカルに取り込んでいきますが、今回は便宜上「GitHubにファイルを新規作成」することで同じ状況を作り出していきます。
今回はファイル名「new-pull」という名前で、h1タグとpタグを使ったhtmlファイルを作成しています。
画面を下にスクロールさせて、「Commit new file」をクリックします。
リポジトリのホーム画面に戻ると、以下赤枠のように新規ファイルが作成されていることがわかります。
これで、GitHubに最新のファイルが追加され、自分のローカル(ワークツリー)には反映されていない状況が出来上がりました。今から「new-pull.html」ファイルをローカルに反映していくことが目的です。
【コマンド実行】「git pull」でリモートリポジトリのデータを取得
では早速、「pull」コマンドを使ってリモートリポジトリのデータを取得していきましょう。結論からお伝えすると、この「pull」コマンドの方が「fetch」コマンドに比べて簡単で楽です。
「pull」コマンドは「git pull <リモート名> <ブランチ名>」を使うことで実行可能です。以下では「リモート名の確認」と「masterブランチにいることの確認」をした上でコマンド実行しています。
「pull」コマンドを実行した後に、「ls」コマンドでワークツリーを確認してみると「new-pull.html」が存在していることが確認出来ます。また、「cat」コマンドでファイルの中身を見てみると、GitHub上で作成したファイルの内容と同じことも確認出来ます。
このように、「fetch」コマンドの時と比べて「1ステップ」でデータ反映が出来ていることがわかります。
言い換えれば、「pull」コマンドは「fetchコマンドとmergeコマンド」を実行しているのと同じとも言えます。
【コマンド比較】「git fetch」と「git pull」のどちらを使うべき?
ここまで見てきた方の中には「pullコマンドの方が楽だしfetchコマンドよりも優れているのでは?」と考える人も多いかと思います。僕も初めて両者のコマンドを知った時は「pull一択」といった感想でした。
自分の目的が達成出来れば正直どちらの方法でもOKだと思いますが、初心者の方は「fetch」コマンドを用いた方がいいかなと個人的には思っています。その理由は、「pull」コマンドはブランチを意識せずともデータの統合が出来てしまい、結果としてコンフリクトのようなトラブルが起こりやすいためです。
チーム開発をバリバリしてるエンジニアの方がどのように使い分けているかはわかりませんが、確実に作業を進めたい方や極力ミスをなくしたい方は「fetch」「merge」を使った方がいいかもしれませんね。
さいごに
今回は、リモートリポジトリのデータを取得する方法「pull」コマンドについて紹介しました。
「fetch」と「pull」の違いについては悩む点もあるかと思いますが、自分で仮想データを用いてGitHub上でトライ&エラーすることで理解を深めてみてください。
では今回はこのへんで。