
こんにちは、きびなご(@kibinag0_blog)です。
今回は、Git初心者が確実に疑問に抱くであろう『git clone』と『git pull』の違いを解説していきます。
えー、どっちもリモートレポジトリからディレクトリを取得するものでしょー。って感じですよね。でも使い所が全然違うんです。それでは、解説。
「git clone」と「git pull」の違い
このプログラマ用のyahoo知恵袋みたいなstackoverflow (英語)がめちゃくちゃ参考になったのでちょっと引用します。
- 英語版
- git clone → Get a working copy of the remote repository.
- git pull → I am working on this, please get me the new changes that may be updated by others.
英語ワカラナイ。って人はきびなご訳で。
- git clone → リモートリポジトリにあるもののコピーを取得する
- git pull → 今ローカルリポジトリで作業中だよ。でも他のチームメンバーがリモートリポジトリに更新加えただろ。その更新を取得して私のローカルリポジトリに反映したまえよ。(ちなみに git pull は git fetch と git merge を合わせたものでもあるもみたいです。)
ってこと。
つまり、git cloneはリモートのリポジトリをそのままコピーして取得するのに対し、git pullはリモートで更新された部分を自分のローカルリポジトリに反映させることができるんですね。
「git clone」と「git pull」の使いどき
きっとgit clone, git pullの使いどきをしっかり理解するとその違いがイメージしやすいかと思います。
- git clone の使い道 → 最初の一回だけ。リモートのリポジトリをそのまま新規作業リポジトリとして、コピーする。
- git pull の使い道 → プロジェクト進行に連れて複数回使用する。具体的にはリモートで他の人が更新したら、その更新を取り込むためにgit pullで自分のローカルに反映させます。
この使い道でgit cloneとgit pullの違いをイメージしやすくなったでしょうか。
「git clone」と「git pull」を流れで理解する
それでは、最後にちゃんとしっかり理解できるように、プロジェクトの流れでその違いを追っていきましょう。
- プロジェクトの参加決定 !
- それでは作業開始。リモートレポジトリから作業用コピーをとる。(git clone)
- ここで自分のパソコンに作業用コピーができました。
- 作業しましょう。作業、作業、作業。
- あ、同じチームのAさんがリモートで変更加えたみたい。
- それじゃ、git pullでその変更を自分の作業用コピーに反映させよう。
- git pull ! これで反映できた!
- それじゃ、続きの作業、作業、作業。
- あ、今度は同じチームのBさんがリモートに変更を加えたみたい。
- これも自分のローカル作業ファイルに反映させなきゃね。
- git pull ! これでBさんの作業した部分も追加できたぞ。
みたいな流れです。とてもとてもざっくりですが、基本的にgit clone で最初にローカルに落とす。そして、git pullでリモート上の更新をローカルに反映させていくみたいなイメージです。
ちなみにgitの基礎はこちらに書いてありますので、よかったらぜひ。
https://qiita.com/kibinag0/items/ec6583e4e7608c4d2add#github%E3%81%8B%E3%82%89%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3%E3%81%99%E3%82%8B