【Git初心者入門】Pullの流れ

スポンサーリンク

はじめに

クマくん
クマくん

今回はpullについてサメさんに教えてもらいたいんだ!

さめさん
さめさん

おおお、今日はテンション高いね!

一体どうしたんだい?

クマくん
クマくん

前回のベアリポジトリの話から気になってしょうがなかったんだよね。

さめさん
さめさん

なるほどね!

何か気になることことがあれば勉強したい意欲も高まるしね。

pullに関しては結構複雑な動きをするから、ややこしいけど任せてよ!

前提

さめさん
さめさん

今回内容を理解してもらうために。

リモートリポジトリA

ローカルリポジトリB

という名前でやっていくね!

Pullの流れ

pullの流れ
  • fetchでリモート追跡ブランチと同期する
  • git merge FETCH_HEADでマージする
  • コンフリクトはgit mergeの段階で起きる
pullの流れを整理しよう

①git fetch リモートリポジトリからファイルを取得する

さめさん
さめさん

まず実行するのはgit fetchっていうコマンドなんだ。

これは完全に独立したコマンドなんだよ。

クマくん
クマくん

git fetchは何をしてくれるの?

さめさん
さめさん

簡単にいうと、git fetchは

リモート追跡ブランチであるorigin/xxxxxxブランチと

リモートリポジトリのremote/origin/masterブランチを同期させるんだよ!

クマくん
クマくん

ふむふむ。

さめさん
さめさん

同期してリモート追跡ブランチが取得した情報をローカルリポジトリのコミットの一番上に重ねるんだ。

イメージとしてはもう一本のブランチを作って繋がっているイメージだね。

クマくん
クマくん

繋がっている??

さめさん
さめさん

そう。

ローカルリポジトリのmasterブランチの上にremote/origin/masterの新しいコミットが続いているんだ。

$ git fetch

②git merge FETCH_HEAD

さめさん
さめさん

今のローカルリポジトリの状態は

masterブランチの最新のコミットにHEAD

remote/origin/masterブランチの最新のコミットにFETCH_HEAD

が置かれている状態になるんだ。

クマくん
クマくん

FETCH_HEADってなに?

さめさん
さめさん

FETCH_HEADっていうのはgit fetchして同期した時の最新のリモート追跡ブランチのことを指すんだよ。

さめさん
さめさん

間違えて違うブランチでfetchしてしまうこともあるからね。

一番最新の最新のリモート追跡ブランチだよっていう証明なんだ。

そのFETCH_HEADにリモートリポジトリから取得したコードが入っているんだ。

クマくん
クマくん

なるほどね。そのFETCH_HEADをマージで取り込んで取得するんだね。

さめさん
さめさん

その通り!

使うコマンドは

git merge FETCH_HEAD

で取り込むことができるよ。

$ git merge FETCH_HEAD

終わりに

さめさん
さめさん

今回はpullの流れが実は2段階あることを知ったと思うんだけど、どう?

クマくん
クマくん

pullって簡単にリモートリポジトリの内容を引っ張ってきているかと思っていたから、今回びっくりしたよ〜。

やっぱりリモート追跡ブランチがわからないところで動いてくれていたんだね。

さめさん
さめさん

縁の下の力持ちって感じだよね!

 

 

Git
スポンサーリンク
クマくんをフォローする
目指せ、スーパーエンジニア
タイトルとURLをコピーしました