دریافت تغییرات از گیت‌هاب — git pull و fetch

گرفتن تغییرات جدید از مخزن ریموت با git pull، تفاوت pull و fetch و مدیریت تعارض هنگام دریافت.

git pull — دریافت و ادغام

git pull تغییرات جدید مخزن ریموت را دانلود و مستقیم در شاخه محلی شما ادغام می‌کند:

git pull origin main

خروجی نمونه:

remote: Enumerating objects: 5, done.
Unpacking objects: 100% (5/5), done.
From github.com:username/my-project
 * branch            main       -> FETCH_HEAD
   a1b2c3d..e5f6g7h  main       -> origin/main
Updating a1b2c3d..e5f6g7h
Fast-forward
 README.md | 4 ++++
 1 file changed, 4 insertions(+)

pull = fetch + merge

در واقع git pull دو کار پشت‌صحنه انجام می‌دهد:

  1. git fetch: دانلود تغییرات ریموت (بدون اعمال)
  2. git merge: ادغام آن‌ها در شاخه فعلی

تفاوت pull و fetch

ویژگیgit fetchgit pull
دانلود تغییرات✅✅
اعمال در کد شما❌ فقط ذخیره می‌کند✅ فوراً merge می‌کند
امکان بررسی قبل از ادغام✅ عالی❌
ریسک تعارض غافلگیرکنندههیچممکن است
سرعت و سادگینیاز به قدم اضافهیک دستور ⭐
قانون سرانگشتی: pull برای کار روزمره (وقتی مطمئنید)، fetch وقتی می‌خواهید اول ببینید دیگران چه کرده‌اند بعد تصمیم بگیرید.

سناریوی fetch حرفه‌ای

# ۱. فقط دانلود:
git fetch origin

# ۲. دیدن چه چیزی جدید آمده:
git log main..origin/main --oneline
# e5f6g7h افزودن بخش نصب به README

# ۳. دیدن تفاوت‌ها:
git diff main origin/main

# ۴. اگر راضی بودید، ادغام:
git merge origin/main

کدام شاخه pull می‌شود؟

اگر با -u شاخه‌ها را وصل کرده باشید، فقط git pull کافی است:

git pull
# Already up to date. (همه‌چیز به‌روز است)

تعارض هنگام pull

اگر شما و ریموت یک بخش را تغییر داده باشید:

git pull
# CONFLICT (content): Merge conflict in README.md
# Automatic merge failed; fix conflicts and then commit the result.

همان فرایند حل تعارض merge معمولی است (مبحث ۱۶): فایل را ویرایش کنید، نشانه‌ها را حذف کنید، git add و git commit.

pull با rebase (پیشرفته)

برای تاریخچه خطی‌تر، بعضی‌ها pull را با rebase انجام می‌دهند:

git pull --rebase origin main

یعنی کامیت‌های محلی شما روی تغییرات جدید ریموت «بازپخش» می‌شوند — تاریخچه تمیزتر اما مفهوم پیچیده‌تر. فعلاً همین بدانید که وجود دارد؛ در فصل Rebase کامل یاد می‌گیرید.

عادت طلایی

قبل از شروع هر روز کاری و قبل از هر push، یک git pull بزنید! این کار تعارض‌ها را کوچک و نادر نگه می‌دارد.

خلاصه

این مبحث بخشی از دوره آموزش کامل Git است.

ابزارهای مرتبط