logo

جيت ريباس

إعادة التأسيس هي عملية لإعادة تطبيق الالتزامات بالإضافة إلى رحلة أساسية أخرى. يتم استخدامه لتطبيق سلسلة من الالتزامات من فروع مختلفة في الالتزام النهائي. إنه بديل لأمر git merge. إنها عملية خطية للدمج.

في Git، يُشار إلى مصطلح rebase على أنه عملية نقل أو دمج سلسلة من الالتزامات مع التزام أساسي جديد. يعد إعادة التأسيس مفيدًا للغاية ويصور العملية في بيئة سير عمل متفرع للميزات.

من الجيد إعادة تأسيس فرعك قبل دمجه.

جيت ريباس

بشكل عام، إنه بديل لأمر git merge. يعد الدمج دائمًا سجلاً متغيرًا للأمام. نسبيًا، تعد rebase أداة مقنعة لإعادة كتابة التاريخ في git. فهو يدمج الالتزامات المختلفة واحدًا تلو الآخر.

لنفترض أنك قمت بثلاثة التزامات في فرعك الرئيسي وثلاثة في فرعك الآخر المسمى test. إذا قمت بدمج هذا، فسيتم دمج جميع الالتزامات في وقت واحد. ولكن إذا قمت بإعادة قاعدته، فسيتم دمجه بطريقة خطية. النظر في الصورة أدناه:

جيت ريباس

توضح الصورة أعلاه كيفية عمل git rebase. يتم دمج الالتزامات الثلاثة للفرع الرئيسي خطيًا مع التزامات فرع الاختبار.

الدمج هو الطريقة الأكثر مباشرة لدمج الفروع. يقوم بإجراء دمج ثلاثي الاتجاه بين آخر التزامين فرعيين.

كيفية إعادة الأساس

عندما قمت ببعض الالتزامات على فرع الميزات (فرع الاختبار) وبعضها في الفرع الرئيسي. يمكنك إعادة تأسيس أي من هذه الفروع. استخدم أمر git log لتتبع التغييرات (سجل الالتزام). الخروج إلى الفرع المطلوب الذي تريد إعادة تأسيسه. الآن قم بتنفيذ أمر rebase كما يلي:

بناء الجملة:

 $git rebase 

إذا كان هناك بعض التعارضات في الفرع، قم بحلها وتنفيذ الأوامر أدناه لمواصلة التغييرات:

 $ git status 

يتم استخدامه للتحقق من الحالة،

 $git rebase --continue 

يتم استخدام الأمر أعلاه لمتابعة التغييرات التي أجريتها. إذا أردت تخطي التغيير، يمكنك التخطي كما يلي:

الفرق بين العشاء والعشاء
 $ git rebase --skip 

عندما يتم الانتهاء من إعادة الأساس. ادفع المستودع إلى الأصل. خذ بعين الاعتبار المثال أدناه لفهم أمر git merge.

لنفترض أن لديك فرع يقول test2 الذي تعمل عليه. أنت الآن في فرع test2 وقمت بإجراء بعض التغييرات في ملف المشروع newfile1.txt .

أضف هذا الملف إلى المستودع:

 $ git add newfile1.txt 

الآن، قم بتنفيذ التغييرات. استخدم الأمر أدناه:

 $ git commit -m 'new commit for test2 branch.' 

سيبدو الإخراج كما يلي:

 [test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+) 

تبديل الفرع إلى الرئيسي:

 $ git checkout master 

انتاج:

 Switched to branch 'master.' Your branch is up to date with 'origin/master.' 

أنت الآن في الفرع الرئيسي. لقد أضفت التغييرات إلى ملفي، يقول ملف جديد.txt . يتم استخدام الأمر أدناه لإضافة الملف إلى المستودع.

 $ git add newfile.txt 

الآن قم بتنفيذ الملف للتغييرات:

 $ git commit -m ' new commit made on the master branch.' 

انتاج:

 [master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master) 

للتحقق من سجل السجل، قم بتنفيذ الأمر أدناه.

 $ git log --oneline 

انتاج:

جيت ريباس

كما نرى في سجل السجل، هناك التزام جديد في الفرع الرئيسي. إذا كنت أرغب في إعادة تأسيس فرع test2 الخاص بي، فماذا علي أن أفعل؟ راجع سيناريو فرع إعادة الأساس أدناه:

فرع ريباس

إذا كان لدينا العديد من الالتزامات من فروع مختلفة ونريد دمجها في فرع واحد. للقيام بذلك، لدينا خياران إما أن نقوم بدمجه أو إعادة تأسيسه. من الجيد إعادة تأسيس فرعك.

من المثال أعلاه، التزمنا بالفرع الرئيسي ونريد إعادة تأسيسه على الفرع test2. دعونا نرى الأوامر أدناه:

 $ git checkout test2 

سيقوم هذا الأمر بتحويلك إلى فرع test2 من السيد.

انتاج:

 Switched to branch 'test2.' 

أنت الآن في فرع test2. وبالتالي، يمكنك إعادة تأسيس فرع test2 بالفرع الرئيسي. انظر الأمر أدناه:

سلسلة إلى json جافا
 $ git rebase master 

سيقوم هذا الأمر بإعادة تأسيس فرع test2 وسيظهر كـ التقديم: التزام جديد على فرع test2 . النظر في الإخراج أدناه:

انتاج:

جيت ريباس

جيت التفاعلية Rebase

يسهل Git باستخدام Interactive Rebase؛ إنها أداة قوية تسمح بعمليات مختلفة مثل تحرير، إعادة كتابة، إعادة ترتيب، والمزيد عن الالتزامات الحالية. لا يمكن تشغيل Interactive Rebase إلا على الفرع المسحوب حاليًا. لذلك، قم بتعيين فرع HEAD المحلي الخاص بك على الشريط الجانبي.

يمكن استدعاء Git Interactive rebase باستخدام أمر rebase، فقط اكتب -أنا جنبا إلى جنب مع الأمر rebase. هنا ' أنا 'تقف على التفاعلية. بناء جملة هذا الأمر موضح أدناه:

بناء الجملة:

 $ git rebase -i 

وسوف يسرد جميع الخيارات التفاعلية المتاحة.

انتاج:

جيت ريباس

بعد الإخراج المحدد، سيتم فتح محرر بالخيارات المتاحة. النظر في الإخراج أدناه:

انتاج:

جيت ريباس

عندما نقوم بتنفيذ أمر git Interactive rebase، فإنه سيفتح محرر النصوص الافتراضي الخاص بك مع الإخراج أعلاه.

الخيارات التي يحتوي عليها مذكورة أدناه:

  • يختار
  • إعادة صياغة
  • يحرر
  • قرع
  • يصلح
  • تنفيذي
  • استراحة
  • يسقط
  • ملصق
  • إعادة ضبط
  • دمج

تؤدي الخيارات المذكورة أعلاه مهامها المحددة باستخدام git-rebase. دعونا نفهم كل خيار من هذه الخيارات باختصار.

اختيار (-ع):

اختر المدرجات هنا التي يتم تضمين الالتزام فيها. يعتمد ترتيب الالتزامات على ترتيب أوامر الاختيار أثناء إعادة الأساس. إذا كنت لا ترغب في إضافة التزام، عليك حذف السطر بأكمله.

إعادة صياغة (-ص):

إعادة الصياغة مشابهة تمامًا لأمر الاختيار. قام خيار إعادة الصياغة بإيقاف عملية إعادة التسمية مؤقتًا ويوفر فرصة لتغيير رسالة الالتزام. لا يؤثر على أي تغييرات تم إجراؤها بواسطة الالتزام.

تحرير (تحريرات):

يسمح خيار التحرير بتعديل الالتزام. يعني التعديل أنه يمكن إضافة الالتزامات أو تغييرها بالكامل. يمكننا أيضًا إجراء التزامات إضافية قبل أمر متابعة rebase. يسمح لنا بتقسيم الالتزام الكبير إلى التزام أصغر؛ علاوة على ذلك، يمكننا إزالة التغييرات الخاطئة التي تم إجراؤها في الالتزام.

عمق الخوارزمية البحث الأول

الاسكواش (-ق):

يتيح لك خيار الاسكواش الجمع بين التزامين أو أكثر في التزام واحد. كما يسمح لنا بكتابة رسالة التزام جديدة لوصف التغييرات.

الإصلاح (-f):

إنه مشابه تمامًا لأمر الاسكواش. لقد تجاهلت رسالة الالتزام المراد دمجها. يتم استخدام رسالة الالتزام الأقدم لوصف كلا التغييرين.

التنفيذي (-x):

يتيح لك خيار exec تشغيل أوامر shell التعسفية مقابل الالتزام.

فاصل (-ب):

يقوم خيار الاستراحة بإيقاف عملية إعادة التأسيس في الموضع الصحيح. وسوف يستمر في إعادة التأسيس لاحقًا باستخدام ' جيت rebase --متابعة ' يأمر.

انخفاض د):

يتم استخدام خيار الإفلات لإزالة الالتزام.

التسمية (-ل):

يتم استخدام خيار التسمية لتحديد موضع الرأس الحالي بالاسم.

إعادة تعيين (-ر):

يتم استخدام خيار إعادة الضبط لإعادة ضبط الرأس على الملصق.

جافا والتأرجح

GitMerge مقابل Rebase

إنه السؤال المحير الأكثر شيوعًا لمستخدمي git متى يجب استخدام أمر الدمج ومتى يستخدم rebase. كلا الأمرين متشابهان، وكلاهما يُستخدم لدمج الالتزامات التي تتم بواسطة الفروع المختلفة للمستودع.

لا يوصى بإعادة التأسيس في فرع مشترك لأن عملية إعادة التأسيس ستؤدي إلى إنشاء مستودعات غير متناسقة. بالنسبة للأفراد، يمكن أن تكون إعادة التأسيس أكثر فائدة من الدمج. إذا كنت تريد رؤية السجل الكامل، فيجب عليك استخدام الدمج. يتتبع الدمج سجل الالتزامات بأكمله، بينما يقوم rebase بإعادة كتابة واحدة جديدة.

يتم ذكر أوامر Git rebase كبديل لـ git merge. ومع ذلك، لديهم بعض الاختلافات الرئيسية:

دمج جيت جيت ريباس
يؤدي الدمج إلى إنشاء التزام نهائي عند الدمج. لا يؤدي Git rebase إلى إنشاء أي التزام عند إعادة التأسيس.
إنه يدمج جميع الالتزامات كالتزام واحد. يقوم بإنشاء مسار خطي من الالتزامات.
يقوم بإنشاء سجل رسومي قد يكون من الصعب فهمه بعض الشيء. إنه يخلق تاريخًا خطيًا يمكن فهمه بسهولة.
من الآمن دمج فرعين. يتعامل Git 'rebase' مع العمليات الخطيرة.
يمكن إجراء الدمج في كل من الفروع العامة والخاصة. إنه الاختيار الخاطئ لاستخدام إعادة التأسيس في الفروع العامة.
يؤدي الدمج إلى دمج محتوى فرع الميزة مع الفرع الرئيسي. لذلك، يتم تغيير الفرع الرئيسي، ويظل سجل فرع الميزات ثابتًا. قد يؤثر إعادة تأسيس الفرع الرئيسي على فرع الميزة.
الدمج يحفظ التاريخ. إعادة التأسيس تعيد كتابة التاريخ.
يعرض Git merge جميع التعارضات مرة واحدة. يعرض Git rebase التعارضات واحدًا تلو الآخر.