Menu
CoddyTech
flag Ar iconالعربيةdown icon

Git Cherry-pick

آخر تحديث

يقوم git cherry-pick بنسخ التغييرات من commit واحد أو أكثر محدد وتطبيقها على فرعك الحالي على شكل commits جديدة. إنها الطريقة التي تأخذ بها إصلاحًا واحدًا من فرع آخر دون دمج ذلك الفرع بأكمله - وهي مفيدة لنقل hotfix إلى إصدار أقدم أو سحب commit واحد من فرع ميزة.

جرّب هذه الأوامر في ساحة الطرفية - وهي شِل حقيقي داخل متصفحك، دون الحاجة إلى تثبيت أي شيء.

git cherry-pick ينسخ commit واحدًا مختارًا من فرع آخر ويطبّقه على فرعك الحالي.

الصياغة

CommandWhat it does
git cherry-pick <hash>يطبّق commit واحدًا على الفرع الحالي
git cherry-pick <a> <b>يطبّق عدة commits بالترتيب
git cherry-pick <a>..<b>يطبّق نطاقًا من الـ commits (باستثناء a)
git cherry-pick -n <hash>يطبّق التغييرات لكن لا يعمل commit بعد
git cherry-pick -x <hash>يدوّن الـ commit الأصلي في الرسالة

أثناء عملية cherry-pick

إذا واجه cherry-pick تعارضًا، فحلّه ثم تابع.

CommandWhat it does
git cherry-pick --continueيستأنف بعد حل التعارضات
git cherry-pick --abortيلغي ويستعيد الفرع
git cherry-pick --skipيتخطى الـ commit الحالي

مثال عملي

الخطوةالأمرالنتيجة
1git log --oneline hotfixاعثر على الـ hash الخاص بالإصلاح، مثلًا a1b2c3d
2git switch mainانتقل إلى الفرع الذي يجب أن يستقبل الإصلاح
3git cherry-pick a1b2c3dيطبّق الإصلاح على main كـ commit جديد له hash جديد

الأسئلة الشائعة حول git cherry-pick

ماذا يفعل git cherry-pick؟
يأخذ التغييرات التي أدخلها commit محدد ويطبّقها على فرعك الحالي على شكل commit جديد تمامًا (مع hash جديد). على عكس merge أو rebase، لا يجلب فرعًا كاملًا - بل فقط الـ commit أو الـ commits التي تحددها.
متى ينبغي أن أستخدم cherry-pick؟
استخدمه عندما تحتاج إلى commit معيّن في مكان آخر - على سبيل المثال، لنقل إصلاح خطأ من main إلى فرع إصدار، أو سحب commit واحد مفيد من فرع ميزة دون دمج كل شيء. إذا أردت الفرع بأكمله، فاستخدم merge أو rebase بدلًا من ذلك.
كيف أقوم بعمل cherry-pick لعدة commits؟
أدرجها: git cherry-pick <a> <b> <c> يطبّق كلًا منها بالترتيب. للنطاق المتصل استخدم git cherry-pick <start>..<end>، الذي يطبّق كل commit بعد start حتى end وشاملًا له. أضف <start>^..<end> إذا أردت تضمين start نفسه.
ماذا لو تسبب cherry-pick في تعارض؟
يتوقف Git مؤقتًا ويعلّم الملفات المتعارضة. حلّها، ثم نفّذ git add على النتائج، ثم شغّل git cherry-pick --continue. للتراجع تمامًا، استخدم git cherry-pick --abort، الذي يستعيد فرعك إلى الحالة التي كان عليها قبل بدء cherry-pick.
كيف أنفّذ cherry-pick لـ commit من فرع آخر؟
اعثر على الـ hash الخاص بالـ commit باستخدام git log --oneline <other-branch>، وانتقل إلى الفرع الذي يجب أن يستقبله، ثم شغّل git cherry-pick <hash>. يمكنك أيضًا تمرير اسم فرع، كما في git cherry-pick feature، فيُطبَّق الـ commit الموجود في رأس ذلك الفرع.
ما الفرق بين cherry-pick وmerge؟
ينقل git merge كل الـ commits الموجودة على الفرع ويسجّل النقطة التي التقى عندها السجلّان. أما cherry-pick فينسخ الـ commits التي تحدّدها فقط، كـ commits جديدة لا ترتبط بالأصلية. ادمج الفرع عندما تريده كله، واستخدم cherry-pick عندما تريد commit أو اثنين.
هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل git cherry-pick في شِل حقيقي داخل متصفحك - دون الحاجة إلى تثبيت أي شيء. كما يغطي مساق Git التفاعلي المجاني من Coddy نقل الـ commits بين الفروع خطوة بخطوة.
رسم توضيحي للغات البرمجة في Coddy

تعلّم Git مع Coddy

ابدأ الآن