Git Fetch: فئة رئيسية

نشرت: 2023-02-26
كمبيوتر محمول بنظام Linux يعرض نافذة طرفية بنمط كرة أرضية في الخلفية وعلامة مائية ثنائية
fatmawati achmad zaenuri / Shutterstock.com
يشبه الأمر git fetch أمر git pull الذي يقوم بتحديث المستودع المحلي الخاص بك بالمعلومات ويلتزم من المستودع البعيد ، دون الكتابة فوق ملفات العمل الخاصة بك.

يتيح لك الأمر Git fetch النظر قبل القفز. يمكنك اكتشاف التغييرات التي تم إجراؤها على مستودع بعيد ، ولكن بدون الكتابة فوق الملفات المحلية الخاصة بك بالملفات البعيدة.

جدول المحتويات

ما هو git fetch وماذا يفعل؟
Git fetch مقابل السحب
مزامنة مستودعاتك المحلية والبعيدة مع git fetch
مشاهدة جميع العلامات التي تم جلبها
القيام بالجري الجاف أولاً
كيفية إحضار فرع واحد
إحضار كافة الفروع
مقارنة الفروع المحلية والبعيدة
مزامنة فرع محلي مع فرع بعيد
الجرو نصف المدرب

ما هو git fetch وماذا يفعل؟

يقوم أمر fetch في Git بالتنزيلات والملفات والمعلومات الأخرى من مستودع بعيد إلى مستودعك المحلي بأمان. استخدم الجلب عندما تريد معرفة التغييرات التي أجراها المطورون الآخرون ، دون الاضطرار لقبول التغييرات. تظل ملفاتك المحلية كما هي. لماذا هذا مهم؟

عليك أن تحافظ على ذكائك عنك عندما تعمل كجزء من فريق التطوير. سيحتوي المستودع البعيد أو المركزي على التغييرات والفروع الجديدة التي أنشأها المطورون الآخرون ودفعوها إلى المستودع البعيد.

من المحتمل تمامًا أن يكون شخص ما قد قام بتحديث النسخة البعيدة من الملفات التي قمت بتعديلها محليًا على جهاز الكمبيوتر الخاص بك. إذا قمت بإجراء git pull بشكل عرضي لتحديث مستودعك المحلي ، فمن المحتمل أن تجد نفسك تتعامل مع عمليات الدمج لإجراء تغييرات قد لا تريدها حتى.

بمجرد تنزيل المعلومات ، يمكنك فحصها ومعرفة التغييرات. يتيح لك ذلك اتخاذ قرار مستنير بشأن ما تريد دمجه الآن ، إذا كان هناك أي شيء ، وما تريد تأجيله إلى وقت لاحق.

Git fetch مقابل السحب

يتصرف الأمر git fetch مثل الأمر git pull ولكن بدون الخطوة التي تحل محل ملفاتك المحلية. يتم تحديث مستودعك المحلي ومزامنته ، ولكن لا تتم كتابة التغييرات في حالة عمل المستودع المحلي ، لذلك تظل ملفاتك كما هي.

أو بعبارة أخرى ، فإن الأمر git pull يشبه git fetch متبوعًا مباشرة git merge .

مزامنة مستودعاتك المحلية والبعيدة مع git fetch

لجلب جميع البيانات الوصفية المحدثة والالتزامات من مستودع بعيد إلى مستودعك المحلي ، استخدم الأمر git fetch مع الاسم أو عنوان URL للمستودع البعيد. افتراضيًا ، يُطلق على أول مستودع بعيد اسم "الأصل".

 أصل جلب بوابة

يمكنك حذف كلمة "أصل" إذا كنت تعمل مع مستودع واحد بعيد.

 جلب بوابة 

استخدام الأمر git fetch في المستودع البعيد الافتراضي

هذا يسترد أي تحديثات من مستودع "الأصل" ، لكنه لا يدمج التغييرات في ملفات العمل. يمكننا أن نرى أن هناك فرع جديد يسمى "فرع جديد" تم استرجاعه لنا.

بمجرد استخدام الأمر fetch ، يمكنك رؤية القائمة الكاملة للفروع على جهاز التحكم عن بعد ، باستخدام الخيار -r (remote) مع أمر الفرع.

 فرع بوابة -r 

النظر إلى الفروع الموجودة على جهاز التحكم عن بعد الافتراضي

يسرد هذا جميع الفروع التي يعرفها جهاز التحكم عن بُعد ، والتي توجد أيضًا في مستودعك المحلي بعد fetch .

مشاهدة جميع العلامات التي تم جلبها

وبالمثل ، يمكنك استخدام خيار tag (لاحظ أنه "علامة" بدون "s") لمشاهدة قائمة العلامات.

 علامة بوابة 

استخدام الأمر git tag لسرد العلامات في المستودع المحلي

ذات صلة: كيفية تبديل أجهزة التحكم عن بعد وإضافتها وإزالتها

القيام بالجري الجاف أولاً

على الرغم من أن git fetch لا يدمج التغييرات في ملفات العمل الخاصة بك ، إلا أنه لا يزال يقوم بتحديث المستودع المحلي الخاص بك. إذا كنت تريد معرفة التغيير الذي سيؤديه أمر fetch ، دون إجرائه فعليًا ، فاستخدم الخيار --dry-run .

 الحصول على بوابة - تشغيل جاف 

باستخدام الخيار --dry-run حتى ترى التغييرات التي سيسترجعها أمر الجلب

كيفية إحضار فرع واحد

يعد جلب المعلومات حول فرع واحد أمرًا سهلاً. أضف اسم الفرع إلى سطر الأوامر لإخبار fetch أنك تحتاج فقط إلى معرفته عن هذا الفرع الواحد.

هنا ، نطلب من fetch استرداد الفرع "mary-feature" من "أصل" المستودع البعيد.

 بوابة جلب الأصل mary-feature 

استخدام git fetch لاسترداد فرع واحد بعيد

الآن بعد أن أصبحت تفاصيل ومحتويات الفرع البعيد في المستودع المحلي الخاص بك ، يمكنك استخدام الأمر git checkout لإنشاء فرع جديد والسحب من الفرع البعيد. لن يؤدي هذا إلى الكتابة فوق أي ملفات موجودة إذا كانت هذه هي المرة الأولى التي تستخدم فيها هذا الفرع.

 بوابة الخروج -b ماري-ميزة المنشأ / ماري-الميزة 

التحقق بأمان من فرع بعيد تم استرداده إلى فرع محلي جديد

إحضار كافة الفروع

إذا كنت تستخدم أجهزة تحكم عن بُعد متعددة ، فيمكنك توفير الوقت عن طريق سحب جميع التغييرات من جميع الفروع إلى المستودع المحلي الخاص بك باستخدام الخيار --all .

 git fetch - all

مقارنة الفروع المحلية والبعيدة

لمعرفة كيف تختلف الملفات الموجودة في الفرع البعيد عن النسخ المحلية ، استخدم git fetch ، ثم استخدم الأمر git log .

لاحظ أن الفروع المحلية والنائية لها فترتان " .. " تفصل بينهما. يُظهر الخيار --oneline معرف الالتزام ورسالة الالتزام.

 جلب بوابة
 سجل البوابة - oneline mary-feature..origin / mary-feature 

استخدام git لجلب التغييرات عن بعد و git log لإظهار التغييرات

يكون العرض أحادي السطر مفيدًا إذا احتوى الفرع على عدد كبير من التغييرات. للاطلاع على مزيد من المعلومات ، احذف الخيار --oneline .

 بوابة سجل ماري ميزة..origin / ماري ميزة 

حذف الخيار --oneline حتى يظهر ذلك الجزء مزيدًا من التفاصيل لكل التزام

يوضح لنا هذا وقت وتاريخ كل التزام ، جنبًا إلى جنب مع رسالة الالتزام وتفاصيل الاتصال بمؤلف التغيير.

مزامنة فرع محلي مع فرع بعيد

إذا قررت أنك تريد المضي قدمًا ودمج التغييرات من الفرع البعيد إلى ملفات العمل المحلية ، فيمكنك استخدام هذه الأوامر.

سنقوم بمراجعة الفرع للتأكد من أننا نعمل على أنه فرعنا الحالي العامل ..

 بوابة الخروج ماري ميزة 

فحص الفرع

تم فحص الفرع من أجلنا ، وأخبرنا أنه خلف الإصدار البعيد. يمكننا استخدام git pull لتحديثه ، ثم git status للتحقق من حالتنا.

 بوابة السحب
 حالة بوابة 

سحب التغييرات من مستودع rmeote إلى المستودع المحلي

إذا أجرينا بعض التغييرات على ملفاتنا المحلية ، فإن Git يبلغنا عندما نتحقق من الفرع أننا سنحتاج إلى إجراء git pull لبدء الدمج.

 بوابة الخروج ماري ميزة 

يخبرنا Git أن البرانسات المحلية والبعيدة قد تباعدت ويجب دمجها

يبدأ git pull البسيط عملية استرداد الملفات ودمجها ، أو يمكننا الغوص في الأمر واستخدام git merge نفسه. سنبدأ بالتأكد من أننا نعمل مع الفرع الصحيح

 بوابة الخروج ماري ميزة 

يخبرنا Git أن البرانسات المحلية والبعيدة قد تباعدت ويجب دمجها

سنخبر git بدمج فرعنا الحالي مع الفرع الموجود في المستودع البعيد ، هناك ستة التزامات مختلفة يجب حلها.

رسالة دمج ناجحة

نحتاج إلى إخبار Git عن الفرع البعيد الذي نريد دمجه.

 أصل دمج بوابة / ميزة ماري 

باستخدام git merge لدمج chnages البعيدة في فرع محلي

يفتح محرر للسماح لنا بتقديم رسالة الالتزام. يمكننا قبول الرسالة المقترحة أو إضافة رسالتنا. المحرر هو المحرر الافتراضي الخاص بك ما لم يتم تكوين Git لاستخدام محرر مختلف.

تحرير رسالة الالتزام

احفظ التغييرات عندما تكون مستعدًا للمتابعة. يستمر الدمج تلقائيًا عند إغلاق المحرر.

كان دمجنا ناجحًا لأنه لم يكن هناك أي تعارضات.

رسالة دمج ناجحة

تنشأ التعارضات عندما يتم تغيير نفس سطور التعليمات البرمجية بواسطة مطورين أو أكثر. إذا كانت هذه هي الحالة ، يقوم Git بترميز التعارضات في الملف المتأثر. ستحتاج إلى مراجعتها بدورها واختيار التغيير الذي تريد الاحتفاظ به.

الجرو نصف مدرب

تمامًا مثل الجرو في التدريب ، سيستعيد fetch ما تطلبه ، لكنه لن يسقطه. إذا كنت تريد فعلاً ما أظهره لك الجرو ، فستحتاج إلى pull .

ذات صلة: Git rebase: كل ما تحتاج إلى معرفته