CodeIQ MAGAZINECodeIQ MAGAZINE

マンガでわかるGit 9話「pullの正体はfetch+mergeだった?」

2017.01.20 Category:【連載】マンガでわかるGit Tag: ,

  • 176
  • このエントリーをはてなブックマークに追加

pullの正体、そしてリモート追跡ブランチとは?
Git初心者のわかばちゃんが実践!
by 湊川あい

pullの正体はfetch+mergeだった?

※前回のお話:マンガでわかるGit 第8話「GitHubを使ってみよう push・pull編


今までは、わかばちゃんは単純にこういうイメージでpush・pullをしていましたが…

↓ 実はこういう構造!

リモートブランチ

  • リモートリポジトリの中にある

リモート追跡ブランチ

  • ローカルリポジトリの中にある
  • リモートブランチをローカルにミラーリング(コピー)しただけのもの
  • 読み取り専用

ローカルブランチ

  • ローカルリポジトリの中にある
  • 普段コミットするブランチ




この2工程をまとめてやってくれるのがpull!

pullの正体はfetch+merge

マンガでわかるGit 8話にてpushとpullを学びましたね。

pullは、実はfetch(フェッチ)というコマンドとmerge(マージ)というコマンドを合わせたものです。

本当に、fetchとmergeを使えばpullと同じことができるのか、試してみましょう。

GitHub上で直接コミットする

まず、誰かがコミットしたという想定で、自分自身でリモートリポジトリに直接コミットしましょう。

編集したいファイルをクリックします。

ペンの形のアイコンをクリックします。

直接編集可能な画面になります。

ツイッターのリンクを追加してみます。

編集が終わったら、画面を下にスクロールしたところにある[commit changes]ボタンをクリックします。

編集した箇所が反映されています。

さて、ここでfetchしてみましょう。SourceTreeの[フェッチ]アイコンをクリックし、[OK]を押します。

リモートリポジトリで作った、4つ目のコミットがダウンロードされてきました!


この「origin/master」っていうのがリモート追跡ブランチなんだね!

ただしこの状態だとリモート追跡ブランチ(origin/master)にコミットがダウンロードされただけで、ローカルブランチ(master)は更新されていません。

そこで[マージ]アイコンをクリックします。

マージするコミットを選びます。リモート追跡ブランチ(origin/master)をクリックして選び、右下の[OK]ボタンをクリックします。

おめでとうございます!

これでリモートリポジトリとローカルリポジトリの状態が揃いました。


fetchのあとmergeをしたら、pullと同じ結果になった!


「pullの裏では、実はfetchとmergeが行われている」というのを意識しておくと、後々役に立つわよ

まとめ

fetch

fetchは、リモートリポジトリから更新内容をダウンロードしてきて、ローカルリポジトリ内のリモート追跡ブランチを更新する

  • つまり、リモート追跡ブランチ(origin/ナントカ)が更新されるだけ
  • この時点ではローカルブランチは更新されていない

merge

  • mergeすることで、はじめてローカルブランチが更新される

pull

  • 「fetchしてからmerge」は、開発の中で頻繁に行われる
  • fetchとmergeを合わせた機能がpull

ブランチやマージについて詳しい解説は、書籍版に収録予定!

マンガでわかるGitの書籍化が決定いたしました!

Gitを初めて使うかたを対象に

  • Gitの仕組み
  • 基本編
  • 実用編「こんなときはどうすればいい?」

といった内容を、マンガと図解で視覚的に解説します。

並行してCodeIQ MAGAZINEでのWeb連載も行なっていきます。

今後ともマンガでわかるGitをよろしくお願いします。

登場人物紹介

わかばちゃんが登場する書籍が発売中です!

<わかばちゃんと学ぶ Webサイト制作の基本>

Webサイトの企画・制作・運用までを、4コママンガと図解で楽しく学べます。
HTML5やCSS3以外にも、アクセス解析やSEOも解説しています!

わかばちゃんが真央ゼミにやってくる前のストーリーになっています。
ぜひ、書店のWeb制作コーナーで、わかばちゃんを見つけてみてくださいね。

Gitに関するクイズ出題中!

Gitコマンドの選択式クイズが出題中です。正解すると、このマンガのおまけの1コマが見られます。ぜひチャレンジしてみてくださいね。

湊川あい(みなとがわ あい)
絵を描くWebデザイナー。高等学校教諭免許状 “情報科” 取得済。マンガと図解の力で、物事をわかりやすく伝えることが好き。2014年より「マンガでわかるWebデザイン」をインターネット上に公開していたところ、出版社より声がかかる。初の著書「わかばちゃんと学ぶ Webサイト制作の基本」が発売中

Twitter: @llminatoll
Webサイト: http://webdesign-manga.com/

※この記事は2016年11月25日時点、SourceTree2.0.5.5、Windows10 Proにおける実施内容です。時期や環境によって、操作が異なることがあります。

  • 176
  • このエントリーをはてなブックマークに追加

■関連記事

マンガでわかるGit 10話「masterブランチを守れ!〜危険な強制プッシュ〜」... masterブランチを守れ! 〜危険な強制プッシュ〜 そ、それはだな……ごにょごにょ わかばちゃん、私がリモートリポジトリのmasterブランチをプロテクトしておいたわ。これで、たとえ強制プッシュしてしまってもエラーで失敗するだけよ。 思う存分Gitしてね。 あ、ありがとうござい...
マンガでわかるGit 第8話「GitHubを使ってみよう push・pull編」... GitHubを使ってみよう push・pull編 この記事は マンガでわかるGit 第7話「GitHubを使ってみよう」の続きです。 前回の状態 マンガでわかるGit 第7話「GitHubを使ってみよう」 の演習を終えたら、このような状態になっていると思います。 SourceTree...
マンガでわかるGit 第7話「GitHubを使ってみよう」... GitHubを使ってみよう そもそもソーシャルコーディングとは ソーシャルコーディングっていうのは、「ソースコードをクラウド上で共有して、他のユーザーとコラボレーションしながら開発をしていく」ということよ。 複数人で開発できる仕組みについては マンガでわかるGit 6話 「集中型...
マンガでわかるGit 第6話「集中型と分散型、何がどう違うの?」... 集中型と分散型って、何がどう違うの? バージョン管理システムは大きく分けて2種類 集中型バージョン管理システム CVS・Subversionなど 分散型バージョン管理システム Git・Mercurialなど 集中型は「ひとつのリポジトリに接続してみんなで使う」タイプ。 分散...
マンガでわかるGit 第5話「過去の状態に戻してみよう」... 過去の状態に戻してみよう このお話は「マンガでわかるGit 4話 コミットしてみよう」の続きです。 ファイルを特定の時点に戻す方法はいろいろあるけど 、今回はチェックアウトを使ってみましょう。 チェックアウト? チェックアウトをすると、作業ディレク...
マンガでわかるGit 第4話「コミットしてみよう」... コミットしてみよう ファイルの変更を記録しよう リポジトリにファイルの変更を記録してみましょう。 基本の流れはこうです。 作業する ステージする(撮影台に乗せる) コミットする(スナップショットを撮る) 1.作業する 第3話で指定したフォルダに、テキストファイルを...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ