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?

開発環境構築で迷わないための `git fetch` と `git pull` 完全ガイド

Posted at

はじめに

この記事では、Gitの基本的なコマンドを整理しながら、特に混同しやすい git fetchgit pull の仕組みと使い分けについて、実際の開発現場でよくあるシーンを交えて解説します。

目次

  1. Gitの基本コマンド復習
  2. リモートリポジトリとの同期について
  3. git fetchの仕組みと使い方
  4. git pullの仕組みと使い方
  5. 実際の開発現場での使い分け
  6. よくあるトラブルと対処法

Gitの基本コマンド復習

まず、開発でよく使うGitコマンドを整理しておきます。

ローカルでの作業

# 現在の状態確認
git status

# ファイルをステージング
git add 
git add .  # 全ての変更をステージング

# コミット
git commit -m "コミットメッセージ"

# ブランチ関連
git branch              # ローカルブランチ一覧
git branch -a           # リモートブランチも含めて一覧表示
git checkout   # ブランチ切り替え
git checkout -b   # ブランチ作成と切り替えを同時に

リモートリポジトリとの連携

# リモートリポジトリの確認
git remote -v

# リモートリポジトリにプッシュ
git push origin 

# リモートの変更を取得(今回の主役!)
git fetch
git pull

リモートリポジトリとの同期について

開発環境構築や日々の開発で最も重要なのが、リモートリポジトリ(GitHub、GitLabなど)との同期です。

なぜ同期が必要なのか?

  • チームメンバーが追加した新機能
  • バグ修正されたコード
  • 新しいライブラリの追加
  • 設定ファイルの更新

これらの変更を自分のローカル環境に反映させるために、同期処理が必要になります。

git fetchの仕組みと使い方

git fetchとは?

git fetchリモートリポジトリの最新情報をローカルに取得するが、現在の作業ブランチには反映しないコマンドです。

git fetch origin

内部的に何が起こっているのか?

  1. リモートリポジトリから最新の情報をダウンロード
  2. origin/mainorigin/develop などのリモート追跡ブランチを更新
  3. 現在のブランチ(作業中のファイル)は変更されない
# fetch後の状態確認
git status
git log --oneline --graph --all  # 全ブランチの状況を可視化

具体的な使用例

開発環境構築時の安全な同期

# 新しいプロジェクトをクローン後
git clone 
cd 

# 最新情報を確認してから作業開始
git fetch origin
git log --oneline origin/main  # 最新のコミット履歴を確認
git checkout main
git merge origin/main  # 安全にマージ

git pullの仕組みと使い方

git pullとは?

git pullfetch + merge を一度に実行するコマンドです。

git pull origin main

これは以下のコマンドを連続実行するのと同じです:

git fetch origin
git merge origin/main

内部的に何が起こっているのか?

  1. リモートリポジトリから最新情報をダウンロード(fetch)
  2. 自動的に現在のブランチにマージ
  3. コンフリクトがあれば解決を求められる

pullの種類

# 通常のpull(マージコミットが作られる)
git pull origin main

# rebaseを使ったpull(履歴が一直線になる)
git pull --rebase origin main

# fast-forwardのみ許可(安全な更新のみ)
git pull --ff-only origin main

具体的な使用例

日々の開発作業での更新

# 作業開始前の routine
git checkout main
git pull origin main

# または作業ブランチの更新
git checkout feature/new-function
git pull origin feature/new-function

実際の開発現場での使い分け

git fetchを使うべき場面

1. 初回の開発環境構築時

# 慎重に環境構築
git fetch origin
git log origin/main  # 最新の状況を把握
git merge origin/main

2. 重要な本番環境での作業前

# 本番デプロイ前の確認
git fetch origin
git diff HEAD origin/main  # 変更内容を必ず確認
# 問題がなければマージ
git merge origin/main

3. 長期間作業していたブランチの更新

# 長期作業後の安全な同期
git fetch origin
git log --oneline HEAD..origin/main  # 何が変わったかチェック
git merge origin/main

git pullを使うべき場面

1. 日常的な開発作業

# 朝の作業開始時
git pull origin main

# 機能ブランチでの定期更新
git pull origin feature/user-auth

2. 単純な更新のみの場合

# READMEの更新など、コンフリクトが起きにくい変更
git pull origin main

3. チーム内でのルールが確立している場合

# チームでpullの運用ルールが決まっている
git pull --rebase origin main

よくあるトラブルと対処法

1. pullでコンフリクトが発生

# コンフリクト発生
git pull origin main
# Auto-merging file.txt
# CONFLICT (content): Merge conflict in file.txt

# 対処法1: コンフリクトを解決してコミット
# エディタでコンフリクト箇所を修正
git add file.txt
git commit -m "Resolve merge conflict"

# 対処法2: いったん取り消し
git merge --abort

2. fetchしたけどマージを忘れた

# fetchした変更が反映されない
git status
# Your branch is behind 'origin/main' by 3 commits

# 解決法
git merge origin/main

3. pullで意図しない変更が入った

# 直前のpullを取り消し(注意:コミット前のみ)
git reset --hard HEAD@{1}

# より安全な方法(次回から)
git fetch origin
git diff HEAD origin/main  # 変更内容を確認
git merge origin/main

4. リモートブランチの情報が古い

# 削除されたリモートブランチが残っている
git remote prune origin

# すべてのリモート情報を更新
git fetch --all --prune

まとめ

fetch vs pull の使い分けガイドライン

場面 おすすめコマンド 理由
開発環境構築 git fetch → 確認 → git merge 慎重な確認が必要
日常の開発作業 git pull 効率的
本番環境の更新 git fetch → 確認 → git merge 安全性重視
長期作業後の同期 git fetch → 確認 → git merge 多くの変更があるため
チーム開発のルーチン チームのルールに従う 統一性が重要

覚えておきたいベストプラクティス

  1. 不安な時は fetch を使う
  2. 変更内容は必ず確認する習慣をつける
  3. 重要な作業前はバックアップ(ブランチ作成)
  4. チーム内でのルールを明確にする
# 安全な作業の流れ(推奨)
git fetch origin                    # 最新情報取得
git log --oneline HEAD..origin/main  # 変更内容確認
git diff HEAD origin/main           # 詳細な差分確認
git merge origin/main               # 問題なければマージ

何か質問や指摘があれば、コメントでお気軽にお聞かせください。


参考資料

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?