CodeIQ MAGAZINECodeIQ MAGAZINE

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

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

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

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における実施内容です。時期や環境によって、操作が異なることがあります。

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

■関連記事

マンガでわかるGit 11話「強制プッシュするとどうなるの?プッシュできないときはどうすべき?」... 強制プッシュするとどうなるの?プッシュできないときはどうすべき? ☆ 前回のお話はこちら:「masterブランチを守れ!~危険な強制プッシュ~」 さっきの状態を再現してみたわ。 この状態では何も問題ないわね。 ここでわかばちゃんは、masterブランチの内容を修正しようとして、...
マンガでわかる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話 コミットしてみよう」の続きです。 ファイルを特定の時点に戻す方法はいろいろあるけど 、今回はチェックアウトを使ってみましょう。 チェックアウト? チェックアウトをすると、作業ディレク...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

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

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

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