LoginSignup
5
2

git fetch、git merge、git pullとは何か

Last updated at Posted at 2023-11-28

git fetch=「ローカルリポジトリを最新状態にする」と認識していたら
想定通りにローカルリポジトリが最新状態にならず困惑したため、
調べて分かったことを備忘録としてまとめます。

「origin/master」ブランチについて

git fetchを理解するためには、まず「origin/master」ブランチについて知っておく必要がある。

「origin/master」は、リモートリポジトリのmasterブランチを追跡するブランチで、
以下の図のようにリモートリポジトリのmasterブランチと、ローカルリポジトリのmasterブランチの間にある。

image.png

「リモートのmasterブランチを追跡する」なので、
「コードの内容」ではなく、「ブランチの情報」を追跡しているという点が大切。

git fetchとは

git fetchとは、リモートリポジトリのブランチの最新情報を
ローカルリポジトリのorigin/masterに持ってくるコマンド。
「リモートリポジトリに新しくブランチが追加された」というようなブランチの情報が分かる。

image.png

図のように、ローカルリポジトリのmasterブランチは更新されない。
すなわち、リモートリポジトリで自分以外の人がコードを編集していたとしても、
ローカルリポジトリのmasterブランチではコードの変更点を見ることはできない。

git mergeとは

git mergeは、ローカルリポジトリのorigin/masterからmasterに最新情報を持ってくる。
origin/masterの内容をローカルリポジトリのmasterにマージするため
リモートリポジトリで変更のあった箇所をローカルリポジトリのmasterブランチで確認することができる。

image.png

git pullとは

git pullはgit fetchとgit mergeを一度に行うコマンド。
リモートリポジトリのmasterブランチからorigin/masterブランチを介して、
一気に最新情報を持ってくることができる。

image.png

ローカルリポジトリのmasterとリモートリポジトリのmasterで競合する変更があった場合は
コンフリクトが起きるため注意が必要。

まとめ

git fetchではローカルリポジトリのmasterの内容は更新されないことが分かりました。
また、ローカルリポジトリを最新にしたい場合「とりあえずgit pullする!」ではなく
状況に応じてgit fetch、git merge、git pullを使い分けられるようにしたいと思います。

参考

5
2
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
5
2