Gitコマンドはたくさんありますよね。git addとcommit,pushなどは良く使うコマンドだからわかるけど、
fetch、merge、pullになると「どういう意味かわからない...」という方は多いのではないでしょうか。
git fetch
git merge
git pull
今日は3つのGitコマンドについて、できるだけわかりやすく解説していきます。
そもそも**git addとcommit,pushがわからない!**という方は、こちらの記事を読んでくださいね。
↓↓↓
git addとcommit、pushの関係をわかりやすく説明する【Gitコマンド解説①】
##git pullは、fetchとmergeの両方を組み合わせたコマンド
上記の記事で、ローカルリポジトリの内容をリモートリポジトリに送信(アップロード)することを**「push」**と呼びましたね。
反対に、リモートリポジトリからローカルリポジトリを更新することを**「pull」**と呼びます。
画像引用:https://backlog.com/ja/git-tutorial/intro/02/
例えば、A君とB君がチーム開発しているとします。A君が更新したファイルをBくんにも反映させたいです。
これを実現する流れは、以下のようになります。
1.A君がローカルリポジトリの内容をリモートリポジトリに送信(アップロード)する(push)
2.B君がリモートリポジトリからローカルリポジトリを更新する(pull)
これがpullの役割です。見出しには**「git pullは、fetchとmergeの両方を組み合わせたコマンド」**と書きました。以下のような関係式が成り立ちます。
pull = fetch + merge
ここでfetchとmergeの意味がわからない!となったと思うので、それぞれ解説していきます。
##git fetchでリモートからローカルに持ってきて、git mergeでローカルを更新する
リモートリポジトリから最新情報をローカルリポジトリに持ってくることを**「fetch」と呼びます。また、fetchを使ってローカルに持ってきた最新情報を更新することを「merge」**と呼びます。mergeには「統合する、融合させる」という意味があります。
さきほどの関係式をわかりやすくすると、こんな感じです。
pull(リモートから持ってきて更新) = fetch(リモートから持ってくる) + merge(ローカルを更新)
「pullとfetchなにが違うの?」と思ったかもしれません。
pullとfetchの違いは、実際にファイルを更新するかどうかの違いです。mergeをしないとローカルが更新されないわけですね。
※個人開発の場合でも、ブランチを分けて作業することが多いと思います。ブランチで作業していた内容を統合させたいときにmergeコマンドを使うことになります。リモートリポジトリを共有するチーム開発だけで使うコマンドじゃないってことです。
##まとめ
1.リモートリポジトリから最新情報をローカルリポジトリに持ってくることを**「fetch」**と呼ぶ
2.fetchを使ってローカルに持ってきた最新情報を更新することを**「merge」**と呼ぶ
3.**「pull」**はmergeとfetchをまとめて行うコマンド<br><br>
これで、git fetchとmerge、pullの関係について理解が深まったかと思います。
次回は、git clone、log、branch、statusあたりのコマンドについて解説します。
この記事の説明がわかりやすかった!ここ間違ってるよ!次こんな記事を書いて欲しい!などあればコメント、DMよろしくお願いします。LGTMもぜひ。
Twitterもやってますので、フォローしていただけたらうれしいです。
卓球、心理学、哲学、Webサービス、好きな音楽、カメラ、登山、ランニング、読んだ本などなんでもつぶやいてます。
[https://twitter.com/atsushi101011]