git fetchとgit pullの違いを完全理解|リモート追跡ブランチとコンフリクト対処まで解説

2026年5月12日火曜日

git プログラミング

t f B! P L

git fetchとgit pullの違いを完全理解|リモート追跡ブランチとコンフリクト対処まで解説

旅行しながらコードを書いていると、カフェのWi-Fiで急いでGit操作をする場面が結構あります。

メキシコの安宿で深夜に「git pullしたらコンフリクト地獄になった」こともありました。 チーム開発では特に、リモートリポジトリとローカルリポジトリの関係を理解していないと事故ります。

この記事では、git fetchgit pull の違い、リモート追跡ブランチの考え方、コンフリクト対処方法まで、実際に手を動かしながら理解できるようにまとめます。


git fetchとgit pullを理解する前に知るべきこと

Git初心者が最初につまずくのが、「リモート」と「ローカル」の関係です。

Gitでは大きく分けて以下の2つが存在します。

  • GitHub上などに存在するリモートリポジトリ
  • 自分のPC内にあるローカルリポジトリ

そして、その橋渡し役になるのが リモート追跡ブランチ です。


リモート追跡ブランチ(remote tracking branch)とは?

リモート追跡ブランチとは、リモートリポジトリの状態をローカル側で記録しているブランチのことです。

例えば以下のような表示を見たことがあると思います。

origin/main

この origin/main がリモート追跡ブランチです。

つまり、

  • origin → リモートリポジトリ名
  • main → リモート側のブランチ名

を意味しています。

旅行先で別メンバーがpushしていた変更を確認したい時、この概念を理解しているとかなり楽になります。


上流ブランチ(upstream branch)の設定

Git操作をシンプルにする重要概念が「上流ブランチ」です。

上流ブランチを設定しておくと、毎回ブランチ名を書かなくても pull や push ができます。

git branch --set-upstream-to=origin/main

これを設定しておくと、

git pull

だけで更新できるようになります。

長期旅中、ネットが不安定な環境だとコマンドミスが地味にストレスなので、上流ブランチ設定はかなり便利でした。


リモート追跡ブランチの確認方法

チーム開発では、現在どんなブランチが存在しているか把握するのが重要です。

リモートブランチ一覧を確認する

git branch -r

これで現在のリモート追跡ブランチ一覧を確認できます。

詳細情報を確認する

git remote show origin

このコマンドでは、

  • 追跡されているブランチ
  • push先
  • fetch先
  • 現在の設定

などを確認できます。

特に tracked と表示されているものは、現在追跡対象になっているブランチです。

現在の追跡状況を確認する

git branch -vv

どのローカルブランチが、どのリモートブランチを追跡しているか一目でわかります。


リモート追跡ブランチを使って最新状態から作業する

新機能開発を始める時、古いブランチから作業すると事故ります。

最新状態からブランチを切る癖をつけるとかなり安全です。

リモート追跡ブランチから新規ブランチを作成

git checkout -b 新しいブランチ名 origin/リモートブランチ名

例えば:

git checkout -b feature-login origin/main

これで最新のmainブランチ状態から開発できます。

リモート追跡ブランチを更新する

git fetch origin

不要な追跡ブランチを削除する

git branch -dr origin/ブランチ名

git fetchとは?安全に変更を取得するコマンド

git fetchは、リモートリポジトリの変更をローカルにダウンロードするコマンドです。

ただし重要なのは、 まだ自分の作業ブランチには反映されない という点です。

基本コマンド

git fetch origin main

これはリモートmainブランチの最新状態を取得します。

fetchのメリット

  • 安全に最新状態を確認できる
  • いきなりマージされない
  • コンフリクト確認前の下準備になる

実際、海外のコワーキングスペースで作業していた時、pull前にfetchだけして差分確認する癖がかなり役立ちました。

取得内容を確認する

git log --oneline origin/main

fetch後に差分確認してからmergeする流れは、現場でもかなり使われています。


git pullとは?fetchとmergeを同時に行うコマンド

git pullは以下をまとめて実行します。

  • git fetch
  • git merge

基本コマンド

git pull origin main

上流ブランチ設定済みなら、

git pull

だけでOKです。

git pullのメリット

  • 一発で最新化できる
  • 操作がシンプル
  • 初心者でも扱いやすい

注意点

便利ですが、突然コンフリクトが起きる可能性があります。

特に複数人開発では、

  • 同じファイル
  • 同じ行
  • 近いコード

を編集していると競合しやすいです。


git pull時に発生したコンフリクト対処方法

最初にコンフリクトを見た時、正直かなり焦りました。

ターミナルに大量の文字が出て、「壊れた?」と思う人も多いはずです。

コンフリクト発生時の流れ

  1. 競合ファイルを開く
  2. 競合箇所を目視確認
  3. 不要部分を削除
  4. 修正後にadd
  5. commitする

コンフリクト例

<<<<<<< HEAD
ローカル変更
=======
リモート変更
>>>>>>> origin/main

この部分を手動修正します。

Gitは万能ではなく、最後は人間が判断する必要があります。


git pullで使える便利テクニック

Fast Forwardのみ許可

git pull --ff-only origin main

不要なマージコミットを防げます。

マージメッセージ省略

git pull --no-edit origin main

rebaseで履歴を綺麗にする

git pull --rebase origin main

履歴を一直線に保ちたい時に便利です。


まとめ|git fetchとgit pullを理解するとGit操作が一気に楽になる

最初は難しく感じるGitですが、リモート追跡ブランチの概念を理解するとかなり整理されます。

特に重要なのは以下です。

  • fetchは「取得のみ」
  • pullは「取得+統合」
  • リモート追跡ブランチを理解する
  • 上流ブランチ設定で効率化する
  • コンフリクトは落ち着いて手動修正する

旅しながら開発していると、ネット環境も作業環境も安定しません。

だからこそGitの基本理解が、本当に大事だと感じています。

焦ってpullして事故る前に、まずはfetchで状況確認。

この癖がつくだけでも、かなり安全に開発できるようになります。

このブログを検索

Blog Archive

Welcome



旅するWebライター「Hide」のブログへようこそ!

2年間の世界一周を終え、今は旅の思い出を言葉にしながら、AIやプログラミングという新しい冒険を楽しんでいます。最新技術を味方につけて、もっと自由でクリエイティブな発信を続けていきます!

人気の投稿

QooQ