أداء Git Checkout لفرع Remote بسهولة [خطوة بخطوة]

هل أنت جديد في فريق وتم توجيهك لاستنساخ فرع بعيد من مستودع الكود Git؟ سواء كنت جزءًا من مؤسسة كبيرة أو فريق مضغوط، فإن إتقان فروع Git البعيدة مفتاح للتعاون السلس في الكود. في هذا الدليل، نغوص في عملية استرجاع الكود من مستودع Git بعيد، مع التركيز على أمر ‘git checkout remote branch’.

Not a reader? Explore this related video tutorial!

Not seeing the video? Ensure your ad blocker is disabled.

المتطلبات الأساسية

  • يستخدم هذا البرنامج التعليمي الإصدار 2.30 من Git SCM (إدارة الكود المصدري) على ويندوز 10، على الرغم من أنه متوافق مع أي نظام تشغيل يدعم Git.

طرق التثبيت الأخرى المحتملة للويندوز تشمل Chocolatey و Git4Win.

فهم فرع بعيد

مستودعات Git تسجل وتتبع سلسلة من الالتزامات المتعلقة ضمن فرع. بشكل افتراضي، يقع الالتزام في الفرع النشط حاليًا، والذي يطلق عليه عادة main أو master.

A remote branch is a branch located in a remote Git repository. These remote repositories, termed as “remotes,” are the destinations your local Git repository will scout for external commit updates once set up.

اكتشف الفروع المتاحة باستخدام أمر الـ Git branch. الفرع الذي يحمل علامة النجمة (*) هو الفعّال. الفروع المدرجة أدناه هي محلية فقط حيث لم يتم جلب أي فروع من بعد بعد.

git branch
List of local branches shown from the git branch command.

التمرس على Git Checkout Remote Branch

فلنفترض أن لديك مستودع Git محلي ويحدوك الحاجة للتعاون مع مطورين آخرين. هنا يأتي دور أمر Git checkout لتمكينك من جلب أحدث الالتزامات من فرع بعيد في مستودع Git على البعد.

بمجرد تكوين فرع بعيد، سيقوم Git بتكرار الفرع البعيد بدلاً من الفرع المحلي فقط. فيما يلي مثال على الأمر git checkout remote <branch>.

git checkout remote main

استنساخ مستودع Git البعيد

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

1. غالبًا ما يكون من الأسهل استنساخ مستودع بعيد عبر رابط HTTPS بدلاً من SSH لتجنب مشكلات الشهادة وجدران الحماية.

  • انتقل إلى المستودع على GitHub.
  • اضغط على زر Code وحدد HTTPS.
  • انقر على أيقونة Clipboard المجاورة للرابط لنسخ الرابط إلى الحافظة.
Locating the HTTPS clone URL in GitHub.

٢. بعد نسخ عنوان الويب HTTPS إلى الحافظة الخاصة بك، قم بفتح واجهة سطر الأوامر باستخدام واجهة سطر الأوامر المفضلة لديك، مثل نافذة الأوامر في نظام Windows أو Terminal

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

# GitHub git clone https://github.com/Adam-the-Automator/git-checkout-remote-branch
Cloning a remote repository to the local machine.

٤. انتقل إلى المستودع المستنسخ بالأمر، cd git-checkout-remote-branch.

قم بتنفيذ الأمر التالي للحالة للتأكد من أن المستودع قد تم نسخه بنجاح. يكشف أمر Git status الاختلافات بين الفرع المحلي والفرع البعيد، مما يساعد في تحديد ما إذا كان الفرع الخاص بك متصلاً ومُحَدَّثًا! يُسمى المستودع البعيد الافتراضي لـ Git origin، مُسبَوقًا للفرع البعيد main. git status

git status
Checking a repositories status.

بالنسبة لمعظم برمجيات Git الحديثة ، main هو الفرع الأساسي الافتراضي. قد تواجه تطبيقًا قديمًا يستخدم master كاسم فرعه الافتراضي ، ولكن كل من الأسماء تعمل بنفس الطريقة. يستخدم هذا البرنامج التعليمي فروعًا باسم main ، RemoteBranch ، SomeBranch ، و AnotherBranch.

ما هو الـ Git Remote وكيفية تتبع الفروع البعيدة

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

A Git repository itself may have multiple remotes, but a branch can only reference a single remote.

تتبع فرع بعيد ينشئ علاقة مع فرع محلي. تُمكن هذه العلاقة من دفع أو سحب التعديلات بسهولة من فرع بعيد إلى فرع محلي. علاوة على ذلك ، يحدد الفرع المتتبع مدى تقدم أو تأخر الفرع المحلي في التعديلات عن الفرع البعيد.

عرض مستودع Git للبعيدين

أولاً ، تأكد من أن المستودع الذي تعمل عليه يحتوي على أي بعيدي Git. للقيام بذلك ، اعرض بعدي Git في مستودعك باستخدام الأمر git remote كما هو موضح أدناه. في هذا المثال ، يتم عرض بعدين ، origin و remote2.

git remote
Viewing a repositories two configured remotes.

تحمل مستودعات البعيد المتتبعة اثنين إضافيين تسميات origin و remote2 ، حيث قد تكون بعيديك مختلفة.

للحصول على مزيد من التفاصيل حول الريموتات المكونة، أضف مفتاح الأمر v لعرض عنوان URI الكامل لريموت Git.

git remote -v
Viewing verbose details about repo remotes.

قد تتساءل لماذا هناك عناوين URI منفصلة لعمليات fetch و push. بعض تدفقات العمل في Git تسمح لك بفحص التحديثات في مستودع بعنوان URI مختلف عن الذي يمكنك من خلاله إرسال التغييرات، ويُطلق عليها تدفق الثلاث نقاط.

عرض الفروع البعيدة المتاحة

عرض جميع الفروع المتاحة، سواء المحلية أو البعيدة، في مستودعك باستخدام أمر branch. لعرض الفروع البعيدة أيضًا، ألصِق الخيار all، كما هو موضح أدناه.

git branch --all

في الصورة أدناه، يظهر المستودع البعيد origin المستخدم في هذا البرنامج التعليمي كما هو متوقع. ومع ذلك، تغفل هذه الصورة عن جميع الفروع من المستودع البعيد المسمى Remote2.

Viewing all known branches in a repo (including remotes).

إذا لم يظهر فرع على ريموتك في قائمة الفروع، يجب عليك تحديث قائمتك من الفروع البعيدة المتاحة كما هو موضح في القسم التالي.

تحديث الفروع البعيدة المتاحة

في بعض الأحيان، قد يقوم مستودع بعيد بإضافة أو تغيير الفروع. لضمان أنك تعمل مع الفروع الأحدث، من الضروري تشغيل أمر git fetch.

الأمر fetch يتصل بالمستودع البعيد، مسترجعًا قائمة بجميع الفروع المتاحة. اعرض الفروع المتتبعة حاليًا بعد تشغيل أمر git fetch لرؤية أن الفرع البعيد ظاهر الآن، كما هو موضح أدناه.

# استرجاع الفروع البعيدة المتاحة
git fetch

# التحقق من توافر جميع الفروع الآن في مستودع Git المحلي
git branch --all

أدناه، الفرع remotes/origin/RemoteBranch ظاهر الآن في قائمة الفروع البعيدة المتاحة بعد تنفيذ أمر git fetch.

Using git fetch to update the list of available remote branches.

يقوم أمر fetch بفحص التحديثات من البعيد الذي يتم تتبعه حاليًا في الفرع الحالي. لكي يقوم Git بالتحقق من التحديثات من جميع البعيدين في المستودع، بغض النظر عن حالة التتبع، أضف المعامل all.

git fetch --all

لاسترجاع الفروع المتاحة من بعيد محدد، قم بتضمين اسم البعيد في أمر git fetch، مثل Remote2 في المثال أدناه، الذي يسترجع الفرع، main.

# سرد الفروع المتاحة في مستودع Git المحلي
git branch --all
# استرجاع الفروع المتاحة من remote2
git fetch Remote2
# التحقق من توافر الفرع remote2، main، الآن
git branch --all
Fetching main from remote2 with the git fetch command.

في أي وقت تقوم فيه بالتحقق من التحديثات البعيدة باستخدام git fetch, git pull, أو git push, يقارن Git التعهدات مع الفرع البعيد. يمكن للفروع المحلية تتبع أي فرع بعيد في Git. بالإضافة إلى ذلك، يمكن تعيين العديد من الفروع المحلية لتتبع نفس الفرع البعيد.

عرض تتبع كل فرع بعيد

لرؤية الفرع البعيد المتتبع جنبًا إلى جنب مع الفرع المحلي المقابل، استخدم المعلمة vv مع الأمر git branch. نتائج الأمر تعرض قائمة من الفروع والبعيدة في تنسيق [<remote>/<branch>] كما هو موضح أدناه.

git branch -vv
Listing remote tracking of all local branches.

تغيير تتبع الفرع البعيد

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

git branch -u Remote2/main
Setting what remote to track for the current branch.

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

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

إذا تم تحقيق الشروط التالية، سيقوم Git بتحديد الوحدة النائية المناسبة تلقائيًا، وتنزيل نسخة محلية من الفرع النائي، وضبط النسخة المحلية لتتبع الفرع النائي. تحقق من عدم تحقق الشروط التالية من خلال نتائج الأمر git branch --all.

  • A local branch with the same name does not already exist.
  • لا وجود لعدة وحدات نائية تستخدم نفس اسم الفرع النائي.

لأداء عملية git checkout على فرع نائي، استخدم الأمر git checkout واكتب اسم الفرع النائي كما هو موضح أدناه.

git checkout RemoteBranch
Creating a local branch from a remote branch with git checkout.

إذا كان مستودعك المحلي يحتوي بالفعل على فرع محلي بنفس الاسم، فأضف المعلمة b لتحديد اسم فرع محلي بديل قبل فرع الوحدة النائية لتحقق.

git checkout -b AnotherBranch origin/RemoteBranch
Creating a local copy of a remote branch with an alternate local branch name.

إذا كان مستودعك المحلي يحتوي على عدة وحدات نائية بنفس اسم الفرع، فحدد أي وحدة نائية وفرع لتتبع الالتزامات المحلية ضدها.

git checkout --track origin/RemoteBranch
Creating a local copy of a remote branch with tracking enabled.

قد تفضل الإصدارات المستقبلية من Git أن تستخدم الأمر git switch لتغيير وإنشاء الفروع. أمر Git switch مخصص فقط للفروع بينما لأمر Git checkout العديد من القدرات. كتب Irshad S. دليلًا جيدًا عن السبب في ذلك إذا كنت ترغب في قراءة المزيد حوله.

دفع فرع محلي إلى وحدة نائية

بمجرد إنشاء فرع محلي بدون فرع بعيد مقابل لتتبعه، يمكنك دفع الفرع إلى البعيد باستخدام الأمر git push. أفضل طريقة لإنشاء فرع جديد على البعيد المفضل لديك هي استخدام المعلمة u.

المعلمة u، كما تم استخدامها سابقًا، تتطلب وسيط المستودع واسم فرع المصدر. عند تحديد HEAD فقط كاسم فرع المصدر، يفهم Git استخدام اسم الفرع المحلي الحالي كاسم على البعيد، في هذه الحالة، NewBranch.

# الانتقال إلى وتبديل إلى NewBranch
git checkout -b NewBranch
# إنشاء NewBranch على البعيد الأصل
git push -u origin HEAD
# التحقق من وجود الفروع على البعيد الآن
git branch -vv
Pushing a local branch to an upstream remote named origin with the same name as local.

HEAD هو اختصار يعني ببساطة الفرع الحالي. يمكنك دفع فروع أخرى إلى البعيد وإنشاء تتبع باستخدام اسمها بدلاً من HEAD.

في بعض الأحيان، اسم الفرع المحلي الحالي لا يتطابق مع اسم الفرع البعيد. لاستخدام اسم مختلف، حدد اسم الفرع المطلوب بعد المصدر، متصلاً بفاصلة، كما هو موضح أدناه.

# إنشاء الفرع الحالي على البعيد بوصفه AnotherBranch
git push -u origin HEAD:AnotherBranch
# التحقق من وجود NewBranch المحلي الآن باسم AnotherBranch على البعيد الأصل
git branch -vv
Pushing a local branch to an upstream remote named origin with an alternate remote branch name.

خطوات التالية وموارد Git الإضافية

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

إذا كنت ترغب في التعمق في جوانب أخرى لإدارة مستودع Git، فإن المصادر التالية موصى بها بشدة:

  • A primer on detached heads: Discover scenarios where a detached HEAD is beneficial or inadvertent, and how to handle it.
  • Git switch: أمر مخصص للتعامل مع الفروع، على عكس Git checkout الشامل.

Source:
https://adamtheautomator.com/git-checkout-remote-branch/