最近、仕事上でGitの検証を行なっており、git pullとgit pull origin masterの違いについて調べることがあったので、備忘として残しておきます。
結論から言えば、下記の通りかなという感じです。
gitリモート上にある全ブランチの情報および更新を取得する。
git pull origin master:
gitリモート上にある「master」ブランチの情報および更新を取得する。
これだけだと、よくわからんという人のために、事例で紹介します。
目次
「git pull」と「git pull origin master」の違いを事例で考える
とあるGitリポジトリを作成し、AくんとBくんで開発を進める事になりました。
ローカル環境でブランチの情報を取得すべく、「git branch -a」を実行したとします。
「git branch -a」は、ブランチを一覧で取得するコマンドです。
$ git branch -a
すると、下記のように表示されています。
* master remotes/origin/master
これは、下記のふたつの意味を持っています。
・ローカルでは、「master」ブランチを使用している
・リモートでは、「remotes/origin/master」というブランチが存在している
※「remote/origin/」で始まるブランチは、リモートに存在しているブランチのコピー、いわゆるリモートの「追跡ブランチ」になります。
ここで、Bくんが下記のコマンドでブランチ「dev_b」を作り、リモートに「dev_b」をpushしたとします。
$ git checkout -b dev_b $ git push origin dev_b
今、リモートでは「master」と「dev_b」のふたつのブランチが存在しています。
実際に、Bくんのローカル環境で「git branch -a」を実行すると、下記のように「dev_b」がローカル・リモートともに追加されているのがわかるかと思います。
* dev_b master remotes/origin/dev remotes/origin/master
ここで、Aくんが「git pull origin master」と「git pull」を実行した場合の違いを見ていきます。
git pull origin masterを実行した場合
「git pull origin master」したあとに、「git branch -a」を実行してブランチの一覧を確認してみます。
$ git pull origin master $ git branch -a
結果
* master remotes/origin/master
「dev_b」の情報は特に見えません。
つまり、あくまでリモート上のmasterの情報をローカルのmasterに反映しているだけです。
git pullを実行した場合
$ git pull $ git branch -a
結果
* master remotes/origin/dev remotes/origin/master
「git pull origin master」では取得できていなかった「remotes/origin/dev」が追加されています。
使い分け
基本的には「git pull」でいいと思います。
全ブランチの情報をローカルに持ってきておけば、ローカルで「git diff」コマンドを叩いたりして、ブランチごとの差分をとったりできますし。
あえて「git pull origin master」を使うのは下記のようなシチュエーションぐらいかな〜と思います。
※あくまで推測です
・ローカルの容量を節約したい
まとめ
Gitは勉強中なのと、検証ついでに書いた記事なので、もしかしたら間違ってる部分があるかもしれないです。
間違いがありましたら、コメントで教えてもらえると助かります!
コメント