【GitHub】cloneとpullの違いとは?どっちでデプロイするか

この記事からわかること

  • GitHubからファイルをダウンロードするコマンド
  • clonepull違い
  • cloneとpullを使うタイミング意味

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

GitHub上にあるWebアプリのファイル群を本番環境にダウンロードするコマンドである、clonepull

初心者だと両者の違いが分からず、どっちをどのタイミングで使えば良いのか迷ってしまいました。

今回はとpullの違いと使い方をまとめていきたいと思います。

Git cloneとpullの違い

2つのコマンドはGitHub上(リモートリポジトリ)にあるファイルを実行した環境にコピーするという点は同じ役割をもっています。

2つの違いはコピーするファイルの状態です。

cloneコマンドの意味と使い道

$ git clone リポジトリのURL

cloneはクローン(コピー/複製)の言葉通りリモートリポジトリに存在する全てのファイル群の複製をカレントディレクトリに作成します。

git cloneの引数にGitHub上のリモートリポジトリのURLを渡します。

GitHubからリモートリポジトリを作成する手順

実行することでカレントディレクトリにURL末尾名(リポジトリ名)のディレクトリと「.git」ファイルが作成されます。「.git」ファイルの中にバージョン管理履歴が保存されていきます。

カレントディレクトリに同名のディレクトリが既にある場合はcloneは使えません。

なので一番最初のダウンロード時に使用するコマンドになります。

リモートリポジトリが非公開設定の場合はコマンド実行にユーザ名とパスワード(Personal access tokens)が必要になります。

cloneのまとめ

pullコマンドの意味と使い道

$ git pull リモートリポジトリ名 ブランチ名

pullはリモートリポジトリ上の更新されているファイルのみをカレントディレクトリにコピー(上書き)できるコマンドです。コピーするファイルはブランチ単位で指定可能(デフォルトブランチであればmaster)です。

$ git pull origin master

ローカルでブランチごとにステージング→コミット→プッシュしたものがリモートリポジトリにブランチ単位で保存されていくので引数に特定のブランチを指定することで特手の更新のみ上書きすることも可能です。

つまりpullコマンドは2回目以降にファイルを更新するたびに実行していくコマンドになります。

こちらも同様にリモートリポジトリが非公開設定の場合はコマンド実行にユーザ名とパスワード(Personal access tokens)が必要になります。

pullのまとめ

また一度pullコマンドを実行していれば、引数なしでも前回と同じブランチを実行してくれます。

pullコマンドの中身はfetchとmerge

pullコマンドは実は内部的に2つのコマンド「fetch」と「merge」を実行しています。「pull」=「fetch + merge」ということです。

この2つを理解するためにローカルとリモートのブランチ構造を整理しておきます。

ブランチとは「変更履歴」のこと。ブランチは複数作ることができ、例えばローカルで「機能追加用のブランチ」と「エラー修正用のブランチ」といったようにファイル編集の目的によってブランチを分けることができます。

Gitのブランチの解説図

そしてそのローカルブランチ達をGitHub(リモートリポジトリ)にpushして登録していきます。

そしてリモートリポジトリのブランチを本番環境(別のローカル)にコピーするときに「pull」=「fetch + merge」を使います。

その際は「リモートブランチ→リモート追跡ブランチ→ローカルブランチ」という流れでコピーしていきます。「リモート追跡ブランチ」とはローカルリポジトリにありリモートブランチの状態変化を追跡しているブランチです。

フェッチとマージの違いとブランチの図
$ git fetch origin master

fetchコマンドを実行することでリモートブランチ(master)の情報をローカルのリモート追跡ブランチ(origin/master)に取得させることができます。

$ git merge origin/master

続いてmergeコマンドを実行することで実際にリモート追跡ブランチ(origin/master)とローカルのブランチ(master)を結合させることで変更部分を更新しています。

この2つのコマンドをまとめて実行してくれているのがpullコマンドなのです。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index