فرع Git Clone - كيفية استنساخ فرع معين

بخلاف أنظمة التحكم في الإصدار المركزي الأقدم مثل SVN و CVS ، يتم توزيع Git. كل مطور لديه السجل الكامل والتحكم في التعليمات البرمجية الخاصة به محليًا أو عن بُعد. يمكنهم أيضًا الوصول إلى عدة أجزاء من الكود أو معالجتها كما يرونها مناسبة من مواقع مختلفة.

منذ أن أنشأ Linus Torvalds (المنشئ الشهير لنواة نظام التشغيل Linux) Git في عام 2005 لتطوير Linux kernel ، أصبح أكثر أنظمة التحكم في الإصدارات الحديثة استخدامًا في العالم.

في هذه المقالة ، سأقدم لك مهام سير عمل فرع Git clone و Git وسأوضح لك كيف يمكنك استنساخ فرع معين بناءً على احتياجاتك. هيا نبدأ! ؟

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

  • المعرفة الأساسية للمحطة
  • القدرة على كتابة الأوامر في الجهاز
  • تم تثبيت Git (سأوضح لك كيف)
  • حساب جيثب
  • ابتسامة على وجهك (ضع ابتسامة الصديق؟)

مقدمة سريعة إلى Git و GitHub

وفقًا لويكيبيديا ،

Git هو نظام تحكم في الإصدار الموزع مصمم لتتبع التغييرات على مشروع (كود) في تطوير البرمجيات. الغرض منه هو فرض التنسيق والتعاون والسرعة والكفاءة بين المطورين.

من ناحية أخرى ، فإن GitHub هي خدمة استضافة قائمة على الويب للتحكم في الإصدار باستخدام Git. يوفر كل التحكم في الإصدار الموزع ووظائف إدارة التعليمات البرمجية المصدر لـ Git بالإضافة إلى إضافة المزيد من الميزات لرمز الكمبيوتر.

كيفية تثبيت Git على نظام Windows

قم بتنزيل وتثبيت أحدث Git for Windows Installer هنا.

كيفية تثبيت Git على Linux

فيما يلي الأوامر المستندة إلى توزيعة Linux الخاصة بك:

دبيان أو أوبونتو

sudo apt-get update sudo apt-get install git

فيدورا

sudo dnf install git

CentOS

sudo yum install git

قوس لينكس

sudo pacman -Sy git

جينتو

sudo emerge --ask --verbose dev-vcs/git

كيفية تثبيت Git على جهاز Mac

قم بتنزيل وتثبيت أحدث برنامج تثبيت Git for Mac هنا.

أو يمكنك كتابة هذا الأمر:

brew install git

الآن بعد أن تم تثبيت Git ، دعنا ننتقل إلى البرنامج التعليمي.

مقدمة إلى Git Clone

يتيح لك Git إدارة وإصدار مشروعك (مشاريعك) في "مستودع". يتم تخزين هذا المستودع على خدمة استضافة تستند إلى الويب للتحكم في الإصدار ، مثل GitHub.

يمكنك بعد ذلك استنساخ هذا المستودع إلى جهازك المحلي والحصول على جميع الملفات والفروع محليًا (سأشرح المزيد عن الفروع قريبًا).

على سبيل المثال ، يمكنك استنساخ مستودع freeCodeCamp باستخدام SSH مثل:

git clone [email protected]:freeCodeCamp/freeCodeCamp.git

مقدمة لفروع جيت

عند العمل في مشروع ، من المحتمل أن يكون لديك ميزات مختلفة. وسيعمل العديد من المساهمين على هذا المشروع ومميزاته.

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

يُعد التفريع مفهومًا أساسيًا في Git يُستخدم أيضًا في GitHub لإدارة مهام سير العمل لإصدارات مختلفة من مشروع واحد. يعتبر masterالفرع دائمًا الفرع الافتراضي في المستودع والذي يعتبر في الغالب "كود إنتاج وقابل للنشر". يمكن إنشاء فروع جديدة مثل passwordless-authأو refactor-signup-uxيمكن إنشاؤها من masterالفرع.

كيفية استنساخ فروع جيت

بينما يمكنك استنساخ المستودعات باستخدام git cloneالأمر ، ضع في اعتبارك أن هذا يستنسخ الفرع وجهاز التحكم عن بُعد HEAD. عادة ما يكون هذا masterافتراضيًا ويتضمن جميع الفروع الأخرى في المستودع.

لذلك عندما تقوم باستنساخ مستودع ، فإنك تقوم باستنساخ masterجميع الفروع الأخرى. هذا يعني أنه سيتعين عليك تسجيل الخروج من فرع آخر بنفسك.

لنفترض أن مهمتك في المشروع هي العمل على ميزة لإضافة مصادقة بدون كلمة مرور إلى لوحة معلومات المستخدم. وهذه الميزة موجودة في passwordless-authالفرع.

لا تحتاج حقًا إلى masterالفرع نظرًا لأنه سيتم دمج "فرع الميزات" الخاص بك masterبعد ذلك. كيف إذن يمكنك استنساخ هذا passwordless-authالفرع دون جلب جميع الفروع الأخرى مع "مجموعة من الملفات التي لا تحتاجها"؟

لقد أنشأت هذا المستودع النموذجي لشرح ذلك. يحتوي هذا المستودع على مدونة بسيطة تم إنشاؤها باستخدام Nextjs ولها أربعة فروع وهمية:

  • رئيس
  • ديف
  • انطلاق
  • المصادقة بدون كلمة مرور

في Nextjs ، pages/apiيتم تعيين أي ملف داخل المجلد إلى /api/*المسار وسيتم التعامل معه كنقطة نهاية API بدلاً من ملف page. في مستودعنا ، قمت بإنشاء واجهات برمجة تطبيقات وهمية مختلفة في هذا الدليل لجعل كل فرع مختلفًا.

في masterفرع يحمل ملف صفحات / المعهد / hello.js في حين passwordless-authتتولى ملف الصفحات / المعهد / auth.js . كل ملف يعرض فقط استجابة نصية وهمية. شاهد masterرد hello API هنا (مع رسالة خاصة لك؟).

لنقم باستنساخ المستودع:

git clone [email protected]:BolajiAyodeji/nextjs-blog.git

يتيح لنا هذا الوصول إلى جميع الفروع في هذا المستودع ويمكنك التبديل بسهولة بين كل منها لرؤية كل إصدار وملفاته.

git branch -a

أتساءل من أين جاءت أجهزة التحكم عن بعد / الأصل / .. الفروع؟

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

هذه الفروع / وحدات التحكم عن بُعد / الأصل / .. توجهك مرة أخرى إلى مستودع الأصل الذي نسخته من الإنترنت حتى تتمكن من إجراء سحب / دفع من الأصل.

لذلك عندما تقوم بالاستنساخ masterعلى جهازك ، remotes/origin/masterيكون masterالفرع الأصلي على الإنترنت ، وهو masterموجود على جهازك المحلي. لذلك سوف تسحب / تضغط من وإلى remotes/origin/master.

باختصار ، Remote هو عنوان URL الذي يوجهك إلى المستودع على الإنترنت بينما Origin هو اسم مستعار لعنوان URL البعيد هذا.

كيفية استنساخ فرع معين

الآن دعنا نستنسخ فرعًا معينًا من مستودعنا التجريبي. هناك طريقتان لاستنساخ فرع معين. يمكنك إما:

  • استنساخ المستودع ، وجلب جميع الفروع ، وقم بالسداد إلى فرع معين على الفور.
  • استنساخ المستودع وجلب فرع واحد فقط.

خيار واحد

git clone --branch  

أو

git clone -b  

باستخدام هذا ، يمكنك إحضار جميع الفروع الموجودة في المستودع ، والسحب إلى الفرع الذي حددته ، ويصبح الفرع المحدد الفرع المحلي المكون لـ git pushو git pull. لكنك لا تزال تجلب جميع الملفات من كل فرع. قد لا يكون هذا ما تريده صحيحًا؟ ؟

دعونا نختبرها:

 git clone -b passwordless-auth [email protected]:BolajiAyodeji/nextjs-blog.git

يتم تكوين هذا تلقائيًا passwordless-authكفرع محلي ولكنه لا يزال يتتبع الفروع الأخرى.

الخيار الثاني

git clone --branch  --single-branch 

أو

git clone -b  --single-branch 

يؤدي هذا الإجراء نفسه الذي يؤديه الخيار الأول ، باستثناء أنه --single-branchتم تقديم الخيار في إصدار Git 1.7.10 والإصدارات الأحدث. يسمح لك فقط بجلب الملفات من الفرع المحدد دون جلب الفروع الأخرى.

دعونا نختبرها:

git clone -b passwordless-auth --single-branch [email protected]:BolajiAyodeji/nextjs-blog.git

يتم تكوين هذا تلقائيًا passwordless-authكفرع محلي ويتتبع هذا الفرع فقط.

إذا قمت بتشغيل cd pages/apiستجد auth.jsالملف في passwordless-authالفرع كما هو متوقع من الإعداد السابق.

استنتاج

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

واحد تلو الآخر ، صحيح؟ ✌؟