Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1205
Help us understand the problem. What is going on with this article?
@osamu1203

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したときにコンフリクトなどが発生してテンパらずに正しい理解で行動出来ますね。

1205
Help us understand the problem. What is going on with this article?
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
eversense
家族を幸せにすることで、笑顔溢れる社会をつくる。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1205
Help us understand the problem. What is going on with this article?