Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Git Rebase vs Merge

آخر تحديث

يدمج كل من git merge وgit rebase العمل من فرع إلى آخر. يربط git merge التاريخين معًا بكوميت دمج، محافظًا تمامًا على ما حدث. أما git rebase فيعيد تشغيل كوميتاتك واحدًا تلو الآخر فوق الفرع الآخر، منتجًا تاريخًا نظيفًا وخطيًا، لكنه يعيد كتابة كوميتاتك في هذه العملية.

القاعدة الذهبية: لا تُجرِ rebase أبدًا على كوميتات سحبها الآخرون بالفعل. جرّب كليهما في ساحة الطرفية — صدفة حقيقية في متصفحك.

جنبًا إلى جنب

Behaviorgit mergegit rebase
شكل التاريخمتفرع، مع كوميت دمجخطي
يعيد كتابة الكوميتاتلانعم
آمن على الفروع المشتركةنعملا
يحافظ على التاريخ الدقيقنعملا
سهولة تتبّع متى تم دمج الأشياءنعمأصعب

الصياغة

CommandWhat it does
git merge featureدمج feature في الفرع الحالي
git merge --no-ff featureإنشاء كوميت دمج دائمًا
git rebase mainإعادة تشغيل كوميتات الفرع الحالي فوق main
git rebase -i HEAD~3تحرير آخر 3 كوميتات بشكل تفاعلي
git rebase --abortإلغاء عملية rebase الجارية

الأسئلة الشائعة حول git rebase vs merge

ما الفرق بين git rebase و git merge؟
يجمع git merge بين فرعين بإنشاء كوميت دمج جديد يضم تاريخيهما، محافظًا على السجل الدقيق لما حدث. أما git rebase فينقل كوميتاتك بحيث يعاد تشغيلها فوق فرع آخر، منتجًا تاريخًا في خط مستقيم لكنه يعيد كتابة تلك الكوميتات بهاشات جديدة. يحافظ merge على التاريخ؛ بينما يعيد rebase كتابته من أجل النظافة.
متى ينبغي أن أستخدم merge ومتى ينبغي أن أستخدم rebase؟
استخدم merge لدمج فرع مكتمل (خاصةً المشترك) — فهو آمن وغير مدمِّر. استخدم rebase لترتيب كوميتاتك المحلية الخاصة قبل مشاركتها، أو لتحديث فرع ميزة فوق أحدث main للحصول على تاريخ نظيف. تُجري فرق كثيرة rebase محليًا، ثم merge إلى main.
ما هي القاعدة الذهبية لـ rebase؟
لا تُجرِ rebase أبدًا على كوميتات بنى عليها آخرون عملهم بالفعل — عادةً أي شيء دفعته (push) إلى فرع مشترك. ولأن rebase يعيد كتابة الكوميتات، فإن القيام بذلك يجبر الجميع على التوفيق بين تاريخ متباعد. أجرِ rebase بحرية على الكوميتات المحلية غير المدفوعة؛ واستخدم merge (أو revert) لأي شيء أصبح عامًا بالفعل.
أيهما يسبب تعارضات أقل، rebase أم merge؟
لا يتجنّب أيٌّ منهما التعارضات، لكنهما يُظهرانها بطرق مختلفة. يحل merge جميع التعارضات دفعة واحدة، في كوميت الدمج. وقد يطلب منك rebase حل التعارضات كوميتًا تلو الآخر مع إعادة تشغيل كل واحد. إجمالي العمل متقارب؛ ما يفعله rebase هو توزيعه فقط.
هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل git merge وgit rebase في صدفة حقيقية داخل متصفحك — لا شيء لتثبيته. كما يغطي مساق Git التفاعلي المجاني من Coddy الدمج وrebase خطوة بخطوة.
Coddy programming languages illustration

تعلّم Git مع Coddy

ابدأ الآن