見出し画像

Gitのfetchとpullの違い、毎回ごっちゃになる問題

Git触り始めた頃、

git fetch
git pull

この2つの違いが本当に分からなかったです。

どっちも

「最新を取ってくるやつ」

に見える。

でも実際は、

“手元のファイルを書き換えるかどうか”

がかなり大きな違いです。

ここ整理すると、
Gitの解像度かなり上がります。


fetch と pull の違い

まず結論。

git pull

は内部的に、

git fetch
git merge

をまとめて実行しています。

つまり、

pull = fetch + merge

です。


git fetchとは?

git fetch

は、

「リモートの最新情報を取得するだけ」

のコマンドです。

重要なのは、

自分の作業ファイルは書き換わらない

ということ。

かなり安全。

イメージとしては、

郵便受けに届いた手紙を回収するだけ

です。

まだ部屋では開かない。

なので、

「他の人が何を変更したか確認したい」

みたいな時に使いやすい。


git pullとは?

一方、

git pull

は、

最新情報を取得したあと、

今の自分の作業に合体させます。

つまり、

手元のファイルが更新される。

イメージとしては、

手紙を開いて、自分のノートに直接書き込む

感じ。

便利なんですが、
不用意に使うと事故ります。


なぜプルリク確認で fetch を使うのか

これ、
実務だとかなり重要。

例えば他人のプルリクを確認したい時。

いきなり pull すると、

自分の作業ブランチに
他人の変更が混ざる可能性があります。

なので普通は、

git fetch

で安全に情報だけ取得して、

そのあと

git checkout

git switch

で対象ブランチへ移動して確認します。

特に、

画像
Excel
PDF

みたいなバイナリファイル確認時は、

VSCodeへフェッチして
ローカルで目視確認することが多いです。


Gitコマンド整理

Gitはコマンドが多いので、

「何を目的に使うか」

で整理すると分かりやすいです。


自分の変更を保存する系

git add

git add .

変更したファイルを、

「保存候補」

としてステージングする。

まだ保存確定ではない。


git commit

git commit -m "ログイン修正"

変更内容を履歴として保存。

ここで初めて
Gitに記録される。


GitHubと同期する系

git push

git push

自分のコミットを
GitHubへアップロード。

チーム共有。


git fetch

git fetch

最新情報だけ取得。

手元ファイルは安全。


git pull

git pull

最新取得+自動合体。

便利だけど影響範囲大きい。


ブランチ操作系

git branch

git branch

ブランチ一覧確認。

今どこにいるか確認できる。


git checkout

git checkout feature/login

別ブランチへ移動。

昔からある。


git switch

git switch feature/login

最近はこちらも多い。

「移動専用」で分かりやすい。


状況確認系

git status

git status

Git初心者の命綱。

迷ったらこれ。

今の状態全部見れる。


git log

git log

変更履歴確認。

誰がいつ何したか見れる。


Gitは「履歴管理システム」と考えると分かりやすい

最初は、

fetch
pull
checkout
merge
rebase

みたいな単語だらけで混乱します。

でも実際は、

  • 情報を取ってくる

  • 保存する

  • 合体する

  • 作業場所を切り替える

をやってるだけ。

ここが整理できると、

「今Gitが何をしているのか」

が見えるようになってきます。

いいなと思ったら応援しよう!