1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Git初心者向け】git fetch、git merge、git pull の違い

Posted at

はじめに

Gitを使い始めて間もない方、もしくは使い始めて結構経つけど git fetchgit mergegit pull の違いがあまりわからないという方向けのお話です。

概要

  • git fetch
  • git merge
  • git pull
  • よくある勘違い

git fetch

git fetchは、

リモートリポジトリの情報

ローカルリポジトリのリモート追跡ブランチ にコピーします。

git_fetch.png

少し分かりにくいですが、ローカルリポジトリの中には

  • ローカルのブランチ情報(自分が作業している or チェックアウト等で作成済みのブランチ情報)
  • リモートリポジトリのコピー情報(画像のリモート追跡ブランチ)

の2つの情報を持っています。

他者が修正して git push した情報はリモートリポジトリに保存されますが、それをローカル上のリモート追跡ブランチにコピーします。

git merge

git merge は、あるブランチの情報を別のブランチに取り込むコマンドです。

例えば 現在「branchA」にチェックアウトしている状態でgit merge mainをすると、

ローカルリポジトリのローカルブランチからマージされます。

git_merge01.png

また、同じ状況でgit merge origin/mainを実行すると、

リモート追跡ブランチのmainブランチ(origin/main)がマージされます。

git_merge02.png

git pull

git pull は git fetch + git merge を組み合わせたようなイメージを持つと理解しやすいです。

リモートリポジトリからローカルのリモート追跡ブランチにコピーした後、差分をローカルブランチにもマージします。

git_pull.png

よくある勘違い

現場で作業をしていて、

  • git merge origin/branchA でリモートリポジトリにある branchA の情報をマージできる

と思っている方が割と多かったです。

これではローカルリポジトリのリモート追跡ブランチからマージするだけなので、リモートリポジトリにある他者の修正分がマージされなくなってしまいます。

こういう時は git pull もしくは git fetch した後に git merge をするようにしましょう。

最後に

筆者は基本的には git fetch + git merge の組み合わせで使用しています。

理由は、fetchで差分を目視で確認した後にマージすることができるからです。
差分に気になる箇所があればマージする前にエスカレーションできます。

(修正量が少ない時は git pull することもありますが)

本記事がどなたかの手助けになれば幸いです。
ここまで読んでいただきありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?