Gitプル・フェッチ入門
リモートの変更を取得する
git pullとgit fetchの違い、使い分け、コンフリクト時の対処法を解説します。
こんな人向けの記事です
- リモートの変更を取得する方法を知りたい人
- pullとfetchの違いを理解したい人
Step 1git fetchとは
リモートの変更をダウンロードしますが、ローカルブランチには反映しません。変更内容を確認してからマージできます。
ターミナル
# リモートの変更を取得
git fetch origin
# 取得した変更を確認
git log origin/main --oneline
# ローカルとの差分を確認
git diff main origin/main
# 問題なければマージ
git merge origin/mainStep 2git pullとは
fetchとmergeを一度に実行します。リモートの変更をすぐにローカルに反映したい場合に使います。
ターミナル
# リモートの変更を取得してマージ
git pull origin main
# リベースで取り込み(履歴が直線的に)
git pull --rebase origin main
# 上流が設定済みなら省略可能
git pullStep 3fetchとpullの使い分け
| 項目 | fetch | pull |
|---|---|---|
| 動作 | ダウンロードのみ | ダウンロード + マージ |
| 安全性 | 高い(変更を確認できる) | 自動マージされる |
| 使用場面 | 変更内容を事前確認したい時 | すぐに最新版にしたい時 |
推奨: チーム開発ではgit fetchで変更を確認してからマージする方が安全です。
Step 4pull時のコンフリクト対処
ターミナル
# コンフリクトが発生した場合
# 1. 該当ファイルを開いてコンフリクトを解消
# 2. 解消したファイルをステージング
git add 解消したファイル名
# 3. コミット
git commit
# pullを中止したい場合
git merge --abort