لجلب فرع من مستودع Git بعيد وبدء العمل عليه محليًا، افتح تطبيق Terminal في المستودع الخاص بك، واجلب التغييرات من المستودع البعيد الصحيح، ثم أنشئ فرعًا محليًا يتتبع الفرع البعيد. على سبيل المثال، يؤدي تنفيذ الأمر git fetch origin متبوعًا بالأمر git switch --track origin/feature/login إلى إنشاء الفرع المحلي feature/login المرتبط بـ origin/feature/login والتبديل إليه.

فتح Terminal في المستودع

افتح تطبيق Terminal وانتقل إلى المجلد الذي يحتوي على مستودع Git الخاص بك. في macOS Terminal، يكون الغلاف (shell) الافتراضي هو zsh، على الرغم من أن إعداداتك قد تستخدم غلافًا مختلفًا. تعمل أوامر Git أدناه في أي منهما؛ ويجب وضع أسماء الفروع التي تحتوي على أحرف وصفية للغلاف (metacharacters) بين علامتي اقتباس حتى لا يفسرها الغلاف. دليل Apple لـ Terminal

إذا كان المستودع مفتوحًا لديك بالفعل في محرر أكواد، فاستخدم الطرفية المدمجة فيه إن كانت متوفرة. وإلا، فاكتب في Terminal الأمر cd ، ثم اسحب مجلد المستودع من Finder إلى نافذة Terminal لإدراج مساره، ثم اضغط على Return. تأكد من أنك في المستودع الصحيح وراجع أي تغييرات محلية قبل تبديل الفروع:

git status --short
git remote -v

يعرض الأمر git remote -v أسماء المستودعات البعيدة وعناوين URL الخاصة بها والتي تم تكوينها. تستخدم الأوامر أدناه الاسم origin، وهو اسم شائع للمستودع البعيد؛ استبدله بالاسم الفعلي الذي يظهر على جهاز Mac الخاص بك. إذا لم يتم إدراج أي مستودع بعيد، فهذا يعني أن هذا المستودع ليس لديه مستودع بعيد تم تكوينه حاليًا للجلب منه.

جلب الفرع البعيد

نفّذ الأمر:

git fetch origin

تؤدي عملية الجلب (Fetching) إلى تنزيل الالتزامات (commits) والمراجع من المستودع البعيد وتحديث مراجع التتبع البعيد المحلية وفقًا لتكوين الجلب الخاص بالمستودع. ولا يؤدي ذلك بحد ذاته إلى تبديل دليل العمل لديك إلى الفرع. في التكوين المعتاد، تظهر الفروع المجلوبة من origin بأسماء مثل origin/feature/login. توضح وثائق Git أن الأمر fetch يُحدث فروع التتبع البعيد، مع التحكم في التعيين الدقيق عبر مواصفة مرجع الجلب (fetch refspec) للمستودع البعيد. وثائق Git الخاصة بـ fetch

يمكنك التأكد من أن الفرع مرئي محليًا عبر:

git branch --remotes

ابحث عن origin/feature/login في المخرجات. وإذا لم يكن موجودًا، فتأكد من صحة اسم الفرع والمستودع البعيد، ومن إمكانية وصولك إلى المستودع البعيد، ومن أن تكوين الجلب للمستودع البعيد يتضمن ذلك الفرع. قد لا تُظهر عملية الجلب الناجحة جميع فروع الخادم إذا كان المستودع يستخدم مواصفة مرجع (refspec) مقيدة.

إنشاء فرع التتبع المحلي والتبديل إليه

عندما يكون فرع التتبع البعيد موجودًا وتريد أن يستخدم الفرع المحلي نفس الاسم، نفّذ:

git switch --track origin/feature/login

يقوم Git بإنشاء فرع محلي باسم feature/login، ويضبط فرعه الرئيسي (upstream) إلى origin/feature/login، ويبدّل شجرة العمل الخاصة بك إليه. تتيح علاقة التتبع لأوامر مثل git status الإبلاغ عن كيفية مقارنة الفرع المحلي بفرعه الرئيسي البعيد، وتمنح Git فرعًا رئيسيًا افتراضيًا لعمليات مثل git pull. يحدد الخيار --track هذا الفرع الرئيسي؛ ويستنتج Git الاسم المحلي من فرع التتبع البعيد بهذه الصيغة. وثائق Git الخاصة بـ switch

إذا كنت ترغب في اسم فرع محلي مختلف، فحدده صراحةً:

git switch --track --create login-work origin/feature/login

يؤدي هذا إلى إنشاء فرع محلي باسم login-work يتتبع origin/feature/login. في إصدارات Git التي تدعم الأمر الأحدث switch، يُعد --create هو الصيغة الطويلة للخيار -c. تحقق من الإصدار المثبت لديك باستخدام git --version إذا أفاد Git بأن الأمر switch غير معروف؛ حيث تم تقديم git switch في إصدار Git 2.23. في هذه الحالة، استخدم الأمر القديم المكافئ:

git checkout --track -b login-work origin/feature/login

التحقق من الفرع والتعامل مع الأخطاء الشائعة

بعد التبديل، تأكد من الفرع النشط وحالة التتبع:

git status -sb
git branch -vv

يجب أن تحدد مخرجات الحالة الفرع المحلي وفرعه الرئيسي. وفي قائمة الفروع، يجب أن يُظهر login-work الفرع origin/feature/login كفرع تتبع له.

إذا ذكر Git أن الفرع غامض، فاستخدم الصيغة المحددة بالكامل remote/branch الموضحة أعلاه بدلاً من الاعتماد على التخمين التلقائي. يمكن لاختصار Git المتمثل في git switch feature/login إنشاء فرع تتبع تلقائيًا عندما يحتوي مستودع بعيد واحد فقط على فرع مطابق، ولكن قد يحدث غموض عند وجود مستودعات بعيدة متعددة تحتوي على ذلك الاسم. وثائق Git الخاصة بـ switch

إذا رُفض التبديل لأن التغييرات المحلية ستُستبدل، فتوقف وراجع git status قبل المتابعة. قم بالالتزام بالعمل الذي تريد الاحتفاظ به أو خزنه مؤقتًا (stash) بأمان؛ ولا تفرض التبديل أو تتجاهل التغييرات إلا إذا كنت تفهم ما سيتم فقدانه. إذا كان اسم الفرع المحلي موجودًا بالفعل، فاختر ذلك الفرع عن قصد أو حدد اسمًا محليًا مختلفًا باستخدام الخيار --create؛ ولا تفترض أن فرعًا موجودًا يتتبع بالفعل المستودع البعيد الذي قصدته.

تكتمل خطة العمل بمجرد التبديل إلى الفرع المحلي المقصود ويشير فرعه الرئيسي إلى الفرع البعيد المقصود. تؤدي عملية الجلب إلى تحديث ما يعرفه مستودعك المحلي عن المستودع البعيد؛ بينما يمنحك إنشاء فرع التتبع مكانًا محليًا للعمل مع الحفاظ على ذلك الاتصال.

المصادر