Help us understand the problem. What is going on with this article?

git fetchの理解からgit mergeとpullの役割

More than 5 years have passed since last update.

photo by yukop

gitを使い始めるとcommit, push, pullなどはある程度理解出来るようになりますが、fetchってなんだ?ってなりますよね。

あまり馴染みにくいのは、pullがfetchmergeの両方を組み合わせたコマンドだからなんですね。

pull = fetch + merge origin/master

fetchとは

gitの場合、リポジトリはリモートとローカルの2ヶ所あります。fetchとはリモートリポジトリから最新情報をローカルリポジトリに持ってくるコマンドです。
fetchをしても、pullのようにファイルが更新されるわけではありません。
あくまでもローカルリポジトリが更新されるだけです。

もっと詳しくいうと、例えばmasterブランチを使っているのであれば、
origin/masterが更新されるということです。

masterとorigin/masterの違い

masterは、例えばローカルのファイルを更新してコミットする場合にはmasterに入りますよね。
ローカルの作業ディレクトリと結び付いているのがmasterブランチです。

origin/masterとはリポジトリと結びついているブランチです。
とはいってもorigin/masterを参照するといっても、常に直接リモート側を見ているわけではないのです。
git fetchをすることでorigin/masterが更新されるのですね。

ローカルリポジトリの中にはmasterとorigin/masterの2つそれぞれの情報が置かれていることになります。
fetchを行ったときに新しい更新があったとするとorigin/masterが最新になり、masterはその分の更新がまだ行われていない事になります。
そこでmergeが必要になるんですね。

master ← origin/master 最新情報をマージするわけですね。

git mergeへ

という理解を持てないと、svnなどを使ってきた人にはどこのブランチをマージするのか?となりますよね。
リモートリポジトリの最新情報をローカルのmasterブランチにマージする必要があります。

git merge origin/master

ここまで処理を行うことでローカルのファイルが最新状態に更新されます。

git pull

git pull は上記の工程を一気に行うコマンドでした。
便利なコマンドではありますが、これらの理解をした上で利用することでpullしたときにコンフリクトなどが発生してテンパらずに正しい理解で行動出来ますね。

eversense
家族を幸せにすることで、笑顔溢れる社会をつくる。
https://eversense.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした