Help us understand the problem. What is going on with this article?

"git pull origin master" の正体

More than 1 year has passed since last update.

素晴らしい記事を見つけた

こちらの記事がとてもわかりやすくローカルリポジトリがリモートについてまとめておられたので、これをみて自分の頭を整理するついでに"git pull origin master"は何をしているのかを理解するための要点をまとめて見る。
対象は、ローカルで使うgitコマンド(commit, branch, checkout, mergeなど)は使えているけど、 リモートリポジトリに対してのgitコマンド(pull, push, fetchなど)が不安という人だ。

git pull origin masterの正体

この記事のまとめはこうだ
git pull origin mastergit fetch +git merge origin/master の合体コマンドである
ではgit fetchgit merge origin/masterは何をしているのか
一つずつ見ていこう

git fetch とは

git fetchはリモートリポジトリとローカルリポジトリの同期をするコマンドだ。
ローカルリポジトリがリモートリポジトリの状態をどのように表しているのかが理解できると同期の仕方が詳しく理解できる。
これを理解するとローカルリポジトリとリモートリポジトリのやり取りの全体像が見えてくる。
ではローカルリポジトリはリモートリポジトリの状態をどのように表しているのか?

ローカルリポジトリでのリモートリポジトリの表され方

リモート追跡ブランチというものが存在する

リモート追跡ブランチとは、リモートリポジトリの「あるブランチの状態」をそのまま表しているブランチである
例えば、リモート追跡ブランチの一つであるorigin/masterブランチは、リモートリポジトリの「masterブランチの状態」をそのまま表すブランチということだ
また、リモート追跡ブランチはorigin/ブランチ名のように表される
つまり、origin/developはリモートリポジトリのdevelopブランチの状態、origin/hogeはリモートリポジトリのhogeブランチの状態をそのまま表すブランチになる。
ただ、ここで問題なのが、追跡ブランチはリモートの状態は自動的に反映されるわけではないということだ
では、どのようにして追跡ブランチにリモートの状態を反映させればいいのだろうか?

git fetchは追跡ブランチにリモートの状態を反映させるコマンド!

git fetchというコマンドを実行すると、全ての追跡ブランチがアップデートされ、現在のリモートの状態が反映される。
つまり、git fetchを行うことで、追跡ブランチは現在のリモートリポジトリの状態を忠実に表すブランチになれるということだ。

git fetch まとめ

git fetchとは、リモートリポジトリの状態を、ローカルの追跡ブランチに反映させるためのコマンドである

git merge origin/masterとは

このコマンドを実行した時にいたブランチに、リモートリポジトリのmasterブランチの状態を表したorigin/masterブランチをマージするコマンドである(基本的にはマスターブランチで行うであろう)
もしリモートのdevelopブランチの状態を持ってきたいとなったらdevelopブランチに移ってgit merge origin/developを実行すればいい。そうするとリモートのdevelopブランチの状態を表したorigin/developブランチがマージできる。

まとめ

git pull origin masterとは、「ローカルリポジトリの状態を追跡ブランチであるorigin/masterとかにコピーしてきて(git fetch)、masterブランチの追跡ブランチ(origin/master)をローカルのmasterブランチにマージしてきて!」という意味のコマンドであった。
cf.) git pull origin developは「ローカルリポジトリの状態を追跡ブランチであるorigin/masterとかにコピーしてきて
(origin/〇〇のブランチに全てにコピーされるからmasterもdevelopもコピーされる)、developブランチの追跡ブランチ(origin/develop)をローカルのdevelopブランチにマージしてきて!」という意味

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away