LoginSignup
3
1

More than 1 year has passed since last update.

Git fetch, merge,pullの違い

Last updated at Posted at 2022-03-04

はじめに

上のGit fetch, merge,pullがそれぞれ似ていてややこしいので調べてみました。
Git操作は開発現場では必須のスキルなので僕自身がgitの使い方を勘違いしたまま
現場に入ってしまったのが上の3つのコマンドの違いです。

それぞれ3つの違いを説明して行きます。
まずがgitの前提知識からです。

ローカルリポジトリとリモートリポジトリの違い

Git にはローカルリポジトリとリモートリポジトリという2種類のリポジトリが存在します。

両者の違いは以下の通りです。

リポジトリ 説明
ローカルリポジトリ 開発者が作業するPCにあるリポジトリ
リモートリポジトリ 開発者全員が共有できるリポジトリ(サーバーなどに上がっている)

ローカルリポジトリで開発し、リモートリポジトリにプッシュして
開発者全員が共有できるようになります。

ローカルリポジトリの中身

ローカルリポジトリは以下の4つがあります。

ワーキングツリー 作業場所でこれからコードを追加する場所
インデックス コミットするファイルを登録する場所
ローカルブランチ ローカル環境にあるブランチ
リモート追跡ブランチ リモートリポジトリのコピー

図にするとこんな感じです。

image.png

引用 https://kray.jp/blog/git-pull-rebase/

ここまでが前提知識です。

Git fetch

リモートの最新情報のコピーをローカルに反映するコマンドです。
取り込む場所はmasterブランチではなく、
origin/masterブランチに取り込みます。

使い方

$ git fetch

これをやった時の画像は参考資料がわかりやすいので載せておきます。

image.png

image.png

引用  https://kray.jp/blog/git-pull-rebase/

他のコマンド例としては

$ git fetch origin master

これで リモートのmasterブランチからローカルのorigin/masterブランチへ反映します。

補足

masterブランチはリリースする時に使うブランチの中心的な役割で
ここからブランチを切って開発して行きます。

origin/masterブランチはローカルにある、リモートのmasterブランチを追跡するリモート追跡ブランチです。

Git merge

現在いるブランチの内容を他のブランチやmasterなどに反映させるコマンドです。
origin/masterからmasterへ最新情報を反映させます。

参考資料の画像を見るとわかりやすいです。

image.png

masterブランチの内容を今いるブランチにマージしたい時には下のコマンドを使うみたいです。

$ git merge master

image.png

これで今いるブランチの中に master ブランチの内容が反映されます。

引用 https://kray.jp/blog/git-pull-rebase/

Git pull

git mergeと git pullを同時に行うコマンドです。
リモートのmasterブランチからローカルのmasterまで一気に最新情報を反映させます。

mergeまで一気にやるため、ローカルブランチとコンフリクトが起きやすいみたいです。

コマンドで確認してみる

Git fetchとGit mergeのコマンドで見て行きます。

⚫︎Git fetch

$ git fetch   //リモートの状態をリモート追跡ブランチにコピー

⚫︎Git merge

$ git merge origin/master  //リモートのコピーからマージ

これらのコマンドを一括でやるのがgit pullです。

$ git pull origin master

注意

先輩エンジニアから聞いたのですが、
git pullはあまり実務で多用することはないみたいです。

参考資料

https://qiita.com/wann/items/688bc17460a457104d7d
https://kray.jp/blog/git-pull-rebase/

3
1
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
3
1