Git Cherry-pick
آخر تحديث
يقوم git cherry-pick بنسخ التغييرات من commit واحد أو أكثر محدد وتطبيقها على فرعك الحالي على شكل commits جديدة. إنها الطريقة التي تأخذ بها إصلاحًا واحدًا من فرع آخر دون دمج ذلك الفرع بأكمله - وهي مفيدة لنقل hotfix إلى إصدار أقدم أو سحب commit واحد من فرع ميزة.
جرّب هذه الأوامر في ساحة الطرفية - وهي شِل حقيقي داخل متصفحك، دون الحاجة إلى تثبيت أي شيء.
الصياغة
| Command | What 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 تعارضًا، فحلّه ثم تابع.
| Command | What it does |
|---|---|
git cherry-pick --continue | يستأنف بعد حل التعارضات |
git cherry-pick --abort | يلغي ويستعيد الفرع |
git cherry-pick --skip | يتخطى الـ commit الحالي |
الأسئلة الشائعة حول 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.هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل
git cherry-pick في شِل حقيقي داخل متصفحك - دون الحاجة إلى تثبيت أي شيء. كما يغطي مساق Git التفاعلي المجاني من Coddy نقل الـ commits بين الفروع خطوة بخطوة.