149
157

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

"git pull origin master" の正体

Last updated at Posted at 2018-08-17

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

こちらの記事がとてもわかりやすくローカルリポジトリがリモートについてまとめておられたので、これをみて自分の頭を整理するついでに"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ブランチにマージしてきて!」という意味

149
157
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
149
157

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?