Git & GitHub Professional Workflow · درس

انتقاء الالتزامات

افهم كيفية تطبيق التزامات فردية بشكل انتقائي من فرع إلى آخر باستخدام `git cherry-pick`

الدرس 3 من 411 خطوة

انتقاء الالتزامات درس مجاني في Git & GitHub Professional Workflow على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Git & GitHub Professional Workflow، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Git & GitHub Professional Workflow 4 دروس في المجموع.

نقل الالتزامات بشكل انتقائي

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

الأمر أشبه بقطف حبة كرز واحدة من شجرة! إذ ينشئ هذا الأمر التزامًا جديدًا تمامًا على فرعكم الحالي، ويكرّر تغييرات الالتزام الأصلي.

متى نستخدم Cherry-Pick؟

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

هذا مثال مثالي لاستخدام cherry-pick. فهو يساعدكم في نقل تغييرات معزولة دون جلب العمل غير المرتبط بها.

الأمر الأساسي

الأمر الأساسي بسيط: git cherry-pick <commit-hash>.

  • تأكدوا أولًا من وجودكم على الفرع الذي تريدون تطبيق الالتزام عليه.
  • ثم احصلوا على المعرّف الفريد (التجزئة) للالتزام الذي تريدون انتقاءه.
  • سينشئ Git بعد ذلك التزامًا جديدًا بالتغييرات نفسها على فرعكم الحالي.
git cherry-pick <commit-hash>

العثور على تجزئات الالتزامات

لإجراء cherry-pick، تحتاجون إلى التجزئة! يمكنكم العثور عليها باستخدام git log.

يُعد الخيار --oneline مفيدًا جدًا لعرض موجز:

git log --oneline

إعداد سيناريو Cherry-Pick

لنعدّ سيناريو بسيطًا. سننشئ فرعًا باسم main وفرعًا باسم feature/login. وسننّفذ التزامًا على feature/login نريد نقله إلى main.

نريد نقل الالتزام "HOTFIX" إلى main.

git init my_project
cd my_project
echo "Initial content" > file.txt
git add file.txt
git commit -m "Initial commit"
git branch feature/login
git checkout feature/login
echo "Login feature added" >> login.txt
git add login.txt
git commit -m "Add basic login feature"
echo "Fix: Login button style" >> style.css
git add style.css
git commit -m "HOTFIX: Fix login button styling"

تنفيذ Cherry-Pick

والآن، عودوا إلى فرع main وطبّقوا الالتزام "HOTFIX". لنفترض أن تجزئة "HOTFIX: Fix login button styling" هي abcdefg.

بعد تشغيل هذا الأمر، سيظهر التزام جديد على فرع main بالتغييرات نفسها الموجودة في abcdefg. استخدموا git log --oneline لرؤيته!

git checkout main
git cherry-pick abcdefg

معالجة تعارضات Cherry-Pick

كما يحدث في الدمج، قد يؤدي cherry-pick إلى تعارضات إذا عُدّلت أسطر الشيفرة نفسها بطرق مختلفة في السجلين.

  • سيوقف Git العملية مؤقتًا ويحدّد الملفات المتعارضة.
  • حلّوا التعارضات يدويًا في الملفات.
  • أضيفوا الملفات التي حُلّت تعارضاتها باستخدام git add.
  • أكملوا العملية باستخدام git cherry-pick --continue.
# After resolving conflicts in editor:
git add .
git cherry-pick --continue

انتقاء عدة التزامات

يمكنكم إجراء cherry-pick لأكثر من التزام واحد في المرة نفسها.

لانتقاء نطاق من الالتزامات (من hashA حتى hashB، دون تضمين hashB):

git cherry-pick hashA..hashB

متى يُستخدم (ومتى لا يُستخدم)

يُعد Cherry-pick أداة قوية، لكن استخدموه بعناية.

  • مناسب لـ: الإصلاحات العاجلة ونقل التغييرات الصغيرة والمعزولة بين الفروع غير المرتبطة.
  • أقل ملاءمة لـ: دمج مجموعات كبيرة من التغييرات بانتظام، إذ قد يؤدي إلى تكرار الالتزامات ويجعل تتبّع السجل أصعب إذا لم تكونوا حذرين. فضّلوا الدمج أو إعادة الأساس لدمج الفروع بالكامل.

اختبار سريع: الغرض من Cherry-Pick

لديكم التزام على فرع feature/new-design يُصلح مشكلة حرجة في التنسيق. وتحتاجون إلى هذا الإصلاح فورًا على فرع main، من دون دمج فرع الميزة بالكامل.

مراجعة: التغييرات المستهدفة

تعلّمنا في هذا الدرس عن git cherry-pick، وهو أمر مفيد لتطبيق التزامات محددة على فرعكم الحالي.

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

يمنحكم إتقان cherry-pick تحكمًا دقيقًا في سجل مشروعكم!

البدء مجانًا

تعلم Git & GitHub Professional Workflow مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
12
الدروس
48

الأسئلة الشائعة

هل درس «انتقاء الالتزامات» مجاني؟

نعم — نص درس «انتقاء الالتزامات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Git & GitHub Professional Workflow، انتقل إلى CoddyKit PRO. تتضمن دورة Git & GitHub Professional Workflow 4 دروس في المجموع.

ماذا ستتعلم في «انتقاء الالتزامات»؟

افهم كيفية تطبيق التزامات فردية بشكل انتقائي من فرع إلى آخر باستخدام `git cherry-pick` تتمرن على Git & GitHub Professional Workflow مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Git & GitHub Professional Workflow؟

لا تُشترط خبرة سابقة. Git & GitHub Professional Workflow على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «انتقاء الالتزامات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Git & GitHub Professional Workflow هذا؟

نعم. كل درس في Git & GitHub Professional Workflow يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. حل تعارضات الدمج يدويًا
  2. إعادة الأساس التفاعلية للسجل
  3. انتقاء الالتزامات
  4. استخدام Git Rerere لإعادة استخدام حلول التعارضات
← العودة إلى Git & GitHub Professional Workflow