freeCodeCamp/guide/arabic/miscellaneous/how-to-use-git-rebase/index.md

53 lines
4.2 KiB
Markdown
Raw Normal View History

---
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)** .