53 lines
4.2 KiB
Markdown
53 lines
4.2 KiB
Markdown
---
|
||
title: How to Use Git Rebase
|
||
localeTitle: كيفية استخدام Git Rebase
|
||
---
|
||
**هل أشرت إلى هذه الصفحة للحصول على قبول العلاقات العامة؟ انتقل إلى اليمين إلى Git Rebase في FCC!**
|
||
|
||
`git rebase` هي أداة مفيدة للغاية وهي عبارة عن إعادة كتابة سجل git ، على الرغم من استخدامها الأكثر شيوعًا _لتكرار الإلتزامات_ المتعددة في واحد. على الرغم من أنه مفيد في هذا السيناريو ، إلا أن هذه ليست الوظيفة الوحيدة التي يمكن لأداء `git rebase` تنفيذها. في الواقع يثبت أنه أكثر فائدة عند استخدامه للوظيفة المقصودة التي يوحي بها اسمها: _لتمهيد_ فرع بشكل أساسي. اسمحوا لي أن أشرح ما أعنيه بذلك.
|
||
|
||
دعنا نقول أن لديك مستودع مثل هذا:
|
||
|
||
` --- Commit 5 ----------- auth branch
|
||
/
|
||
--- Commit 4 -------------- dev branch
|
||
/
|
||
--- Commit 1 ---- Commit 2 ---- Commit 3 -------------------------------- master branch
|
||
`
|
||
|
||
إذا أردت دمج `auth` فرع مع `dev` فرع، وسوف بوابة رمي خطأ في لكم، لأن برنامجك `auth` فرع هو خارج التاريخ: أنه لا يأخذ في الحسبان الالتزام 4. سيكون لديك لجلب فرعك حتى- حتى الآن.
|
||
|
||
يوفر لك git طريقتين للقيام بذلك: الأمر `merge` وأمر `rebase` . من أجل استكشاف أمر `merge` ، قم بزيارة مقالة الويكي ذات الصلة: [Git Merge](//forum.freecodecamp.com/t/understand-how-to-use-git-merge/13215)
|
||
|
||
دعونا تشغيل `rebase` الآن:
|
||
|
||
`$ git checkout auth
|
||
$ git rebase dev
|
||
`
|
||
|
||
سيبدو الريبو الآن هكذا:
|
||
|
||
` --- Commit 5 --- auth branch
|
||
/
|
||
--- Commit 4 --------------------- dev branch
|
||
/
|
||
--- Commit 1 ---- Commit 2 ---- Commit 3 --------------------------------------- master branch
|
||
`
|
||
|
||
هل ترى ماذا حدث؟ أنقذت Git بشكل أساسي الإلتزامات في فرع `auth` ، "أزلتها" ، ثم أنشأتها مرة أخرى بنفس الإلتزامات _بعد_ الالتزام في فرع `dev` . هذا يعني أن `Commit 4` موجود فقط في فرع `dev` وليس فرع `auth` ! وهذا هو حقا كل ما في الامر! قد يبدو هذا مربكًا بعض الشيء في البداية ، لكن حاول فهم الرسم التخطيطي. هذه أداة مفيدة للغاية.
|
||
|
||
## Git-Rebase at FCC
|
||
|
||
### منع دمج النزاعات
|
||
|
||
إذا كنت تساهم في مصدر قاعدة البيانات FCC ، أو تخطط للقيام بذلك ، فقم دائمًا بتشغيل هذا الأمر قبل إجراء أي تغييرات في ملفاتك المحلية ودفعها:
|
||
|
||
`git pull --rebase upstream staging`
|
||
|
||
إذا لم يكن لديك `upstream` إعداد ، ثم قم بتشغيل هذا الأمر قبل تشغيل الأمر أعلاه (git سيرمي خطأ لأنه لا يعرف ما هو upstream): `git remote add upstream https://github.com/freecodecamp/freecodecamp.git`
|
||
|
||
سيؤدي ذلك إلى سحب أحدث التغييرات من الفرع التدريبي FCC وتثبيتها مع فرع التدريج الخاص بك حتى لا يكون هناك أي تعارضات عند فتح PR ![:slight_smile:](//forum.freecodecamp.com/images/emoji/emoji_one/slight_smile.png?v=2 ": slight_smile:")
|
||
|
||
### سحق
|
||
|
||
إذا كان لديك عدة **[إلتزامات تريد إسقاطها](//forum.freecodecamp.com/t/how-to-squash-multiple-commits-into-one-with-git/13231)** في واحدة ، اتبع التعليمات الخاصة بـ **[Squashing](//forum.freecodecamp.com/t/how-to-squash-multiple-commits-into-one-with-git/13231)** . |