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

Git Rebase

آخر تحديث

git rebase ينقل commits فرعك بحيث يُعاد تشغيلها فوق فرع آخر، منتجاً سجلاً مستقيماً وخطياً بدلاً من commit دمج. الـ rebase التفاعلي (-i) يذهب أبعد من ذلك، إذ يتيح لك دمج الـ commits وإعادة ترتيبها وتحريرها أو إسقاطها. ولأن الـ rebase يعيد كتابة الـ commits، لا تفعل ذلك إلا على عمل لم تشاركه بعد.

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

الصيغة

CommandWhat it does
git rebase mainيعيد تشغيل commits الخاصة بك فوق main
git rebase -i HEAD~3يحرّر آخر 3 commits تفاعلياً
git rebase --onto main old newينقل نطاقاً من الـ commits إلى main
git rebase --continueيستأنف بعد حل التعارضات
git rebase --abortيلغي عملية الـ rebase ويستعيد الفرع
git pull --rebaseيقوم بـ pull و rebase بدلاً من merge

كلمات مفتاحية للـ rebase التفاعلي

في المحرر الذي يفتحه -i، غيّر pick إلى إحدى هذه الكلمات.

KeywordWhat it does
pickيُبقي الـ commit كما هو
rewordيُبقي الـ commit ويحرّر رسالته
squashيدمجه في الـ commit السابق ويجمع الرسائل
fixupيدمجه لكنه يتجاهل هذه الرسالة
dropيزيل الـ commit بالكامل

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

ماذا يفعل git rebase؟
يأخذ الـ commits الموجودة على فرعك الحالي ويعيد تشغيلها واحداً تلو الآخر فوق فرع آخر، كما لو أنك بدأت عملك من أحدث commit في ذلك الفرع. النتيجة سجل خطي بدون commit دمج. تُعاد كتابة الـ commits (تحصل على hashes جديدة) خلال هذه العملية.
ما هو الـ rebase التفاعلي؟
git rebase -i <base> يفتح محرراً يسرد الـ commits منذ <base>، حيث يمكنك إعادة ترتيبها، أو squash عدة منها في واحد، أو reword الرسائل، أو edit أحد الـ commits، أو drop لإسقاطه. إنه الأداة الرئيسية لتنظيف سلسلة فوضوية من الـ commits قبل مشاركتها.
ما هي القاعدة الذهبية لإعادة التأسيس؟
لا تُجرِ أبداً rebase على commits بنى عليها آخرون عملهم بالفعل - وهي عادةً أي شيء تم دفعه (push) إلى فرع مشترك. ولأن الـ rebase يعيد كتابة الـ commits، فإن فعل ذلك يُجبر الجميع على التوفيق بين سجل متباعد. أجرِ الـ rebase بحرية على الـ commits المحلية غير المدفوعة؛ واستخدم merge أو revert للعامة منها.
كيف أُصلح أو ألغي عملية rebase بها تعارضات؟
عندما تتوقف عملية rebase عند تعارض، احلّ الملفات، ثم نفّذ لها git add، ثم شغّل git rebase --continue. استخدم git rebase --skip لإسقاط الـ commit الحالي، أو git rebase --abort للإلغاء بالكامل وإعادة الفرع إلى ما كان عليه قبل بدء الـ rebase.
هل يمكنني التدرب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل git rebase في صدفة حقيقية داخل متصفحك - دون الحاجة لتثبيت أي شيء. كما يغطي كورس Git التفاعلي المجاني من Coddy إعادة التأسيس خطوة بخطوة.
Coddy programming languages illustration

تعلّم Git مع Coddy

ابدأ الآن