Git Fetch vs Pull
آخر تحديث
يقوم git fetch بتنزيل أحدث الـ commits من المستودع البعيد لكنه يترك فرع عملك كما هو تمامًا. أما git pull فيقوم بالتنزيل نفسه ثم يدمج تلك الـ commits فورًا في فرعك الحالي. باختصار: git pull = git fetch + git merge.
استخدم fetch عندما تريد النظر قبل الإقدام؛ واستخدم pull عندما تكون مستعدًا للدمج. جرّب كليهما في ساحة الطرفية - وهي shell حقيقية في متصفحك.
جنبًا إلى جنب
| Behavior | git fetch | git pull |
|---|---|---|
| ينزّل الـ commits البعيدة | نعم | نعم |
| يغيّر فرعك الحالي | لا | نعم |
| قد يسبب تعارضات دمج | لا | نعم |
| يعادل | تنزيل فقط | fetch + merge |
الصياغة
| Command | What it does |
|---|---|
git fetch | ينزّل جميع التغييرات البعيدة دون دمج |
git fetch origin main | يجلب فرعًا واحدًا فقط من مستودع بعيد |
git pull | ينزّل ويدمج في الفرع الحالي |
git pull --rebase | ينزّل، ثم يعيد ترتيب (rebase) الـ commits الخاصة بك في الأعلى |
git log HEAD..origin/main | بعد fetch: اطّلع على ما ستدمجه |
الأسئلة الشائعة حول Git fetch مقابل pull
ما الفرق بين git fetch و git pull؟
يقوم
git fetch بتنزيل الـ commits الجديدة وتحديث فروع التتبّع البعيدة لديك (مثل origin/main) لكنه لا يغيّر فرع عملك. أما git pull فيقوم بنفس عملية الـ fetch ثم يدمج الـ commits الجديدة في فرعك الحالي. إذًا فإن pull يغيّر ملفاتك؛ بينما يكتفي fetch بتحديث معرفتك بالمستودع البعيد.هل git pull هو مجرد fetch مع merge؟
نعم.
git pull هو اختصار لـ git fetch متبوعًا بـ git merge للفرع الذي تم جلبه في فرعك الحالي. مع git pull --rebase، تكون الخطوة الثانية rebase بدلًا من merge، مما يبقي السجل خطيًا.متى ينبغي أن أستخدم fetch بدلًا من pull؟
استخدم
git fetch عندما تريد مراجعة التغييرات الواردة قبل دمجها - على سبيل المثال، git fetch ثم git log HEAD..origin/main لترى بالضبط ما هو الجديد. استخدم git pull عندما تثق بالفعل في التغييرات البعيدة وتريد فقط دمجها في فرعك.هل يسبب git fetch أي تعارضات؟
لا. يحدّث fetch فروع التتبّع البعيدة فقط؛ وهو لا يمس أبدًا فرع عملك أو ملفاتك، لذا لا يمكنه إنتاج تعارضات دمج. تنشأ التعارضات فقط في خطوة الـ merge - التي ينفّذها pull تلقائيًا لكن fetch لا يفعل.
هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل
git fetch و git pull في shell حقيقية في متصفحك - لا شيء لتثبيته. كما يغطي مسار Git التفاعلي المجاني من Coddy التعامل مع المستودعات البعيدة خطوة بخطوة.