Git Reflog - كيفية استرداد فرع محذوف لم يتم دمجه



هذه المقالة على Git Reflog هي دليل شامل لكيفية استعادة المتفرعة المحذوفة في Git بمساعدة Git Reflog.

'هل سبق لك أن فقدت فرعًا لم يتم دمج كود مصدره بعد في فرع' الإصدار 'أو الفرع' الرئيسي '؟ ماذا لو كنت تريد إعادة إنشاء فرع محذوف على الرغم من أن عمله قد تم دمجه بالفعل في الفرع الرئيسي؟ ' . حسنًا ، الحل الوحيد لمثل هذه السيناريوهات هو Go Reflog .

من خلال هذا المقال على Git Reflog ، سأساعدكفهم السيناريوهات التي يمكن أن تفقد فيها عملك في الفرع وكيفية استرداد الفرع.أيضًا ، ستسلط هذه المقالة الضوء على النهج الذي يمكنك اتباعه لمنع الخسارة غير المقصودة لفرع أثناء العمل في مشروع كبير.





    1. ما هو Git Reflog؟
    2. كيف ومتى يتم حذف الفرع؟
    3. استعادة فرع محذوف
    4. ما العمل الذي يتم استعادته عند استعادة الفرع المحذوف؟
    5. أوامر Git Reflog الفرعية

لذا ، دعونا نبدأ بهذه المقالة.



النظر في السيناريو ، ميجب على aintainer دمج العديد من فروع الميزات من متعاونين مختلفين ثم حذفها في النهاية ولكن تم حذف الفرع عن طريق الخطأ قبل أن يتم دمج العمل؟

كيفية التعامل مع النافذة المنبثقة في محرك الويب السيلينيوم

حسنًا ، قبل أن أنتقل إلى هذا المقال ، دعني أخبرك أنه غير ممكن في Git. آمنة وتعمل كمنشر شيك لن تسمح لك بالقيام بذلك. لذلك ، هنا يأتي Git Reflog في الصورة.

ما هو Git Reflog؟

اليحتفظ الأمر 'reflog' بامتداد مسار كل تغيير يتم إجراؤه في المراجع (الفروع أو العلامات) للمستودع وتحتفظ بسجل محفوظات للفروع والعلامات التي تم إنشاؤها محليًا أو تم سحبها. يتم الاحتفاظ بسجلات مرجعية مثل لقطة الالتزام عندما تم إنشاء الفرع أو استنساخه أو سحبه أو إعادة تسميته أو أي التزامات تم إجراؤها على الفرع بواسطة والمدرجة بواسطة الأمر 'reflog'.



ملحوظة: سيكون الفرع قابلاً للاسترداد من دليل العمل الخاص بك فقط إذا كان الفرع موجودًا في المستودع المحلي الخاص بك ، أي تم إنشاء الفرع محليًا أو سحبه من مستودع بعيد في مستودعك المحلي لـ Git لتخزين سجلات محفوظاته المرجعية.

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

أمر: اذهب لإعادة التدوين

الآن بعد أن عرفت ، ما هو Git Reflog ، دعناحاول حذف كل من الفرع المدمج وغير المدمج وشاهد كيف يتعامل Git مع ذلك؟

الخطوة 1: ضع قائمة بالفروع التي تم دمجها في الرئيسية

أولاً ، تحقق من رئيس 'فرع إذا كنت في فرع آخر باستخدام الأمر:

سيد بوابة الخروج $

انتاج |

Git Checkout Master - Git Reflog - Edureka

الآن ، للحصول على قائمة الفروع المدمجة ، اذكر الأمر التالي:

فرع git $ - مدمج

انتاج:

الخطوة 1.1: بعد ذلك ، احذف الفرع المدمج:

فرع git $ -d الإصدار # 902

انتاج:

تم حذف الفرع 'رقم 902' بنجاح حيث تم دمجه بالفعل في الفرع 'الرئيسي'.

الخطوة 2: الآن ، دعنا ندرج الفروع التي لم يتم دمجها في الرئيسية.

فرع git $ - غير مدمج

انتاج |

الخطوة 2.2: أخيرًا ، دعنا نحذف فرعًا غير مدمج بالأمر التالي:

$ git Branch -d prepod

إذا حاولت حذف أحد الفروع التي بها عمل غير مكتمل ، قل فرع 'prerod' ، يعرض git رسالة تحذير.

انتاج |

الآن ، قبل أن أخبرك كيف يمكنك استعادة البيانات في هذه المقالة على Git Reflog ، دعني أخبرك بما يحدث بالضبط عندما يتم حذف فرع وتحت أي ظروف يمكن استرداد الفرع.

كيف ومتى يتم حذف الفرع؟

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

ومن ثم ، في مثل هذه السيناريوهات ، قد تكون هناك 3 حالات يتم فيها حذف فرع في سيناريو العالم الحقيقي حيث يعمل العديد من المساهمين في مشروع كبير. يمكن أن تكون الحالات التالية:

الحالة 1 - يمكن للمطور إما دمج الفرع أو حذفه

ضع في اعتبارك سيناريو حيث يقوم المطور بدمج فرع الميزة في الفرع الرئيسي محليًا ثم يقوم بحذف فرع الميزة باستخدام فرع بوابة 'مع' - د 'كما رأينا في لقطات الشاشة السابقة.

أمر: 'git Branch -d Branch_name'

قد يحدث أيضًا أن يقرر المطور حذف التغييرات على الفرع ويقرر حذف الفرع دون دمجه مع أي فرع آخر باستخدام الأمر التالي:

أمر: 'git Branch -D Branch_name'

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

فرع $ git -D preprod

انتاج |

ملحوظة : لن يتم سرد فرع 'preprod' عند تشغيل الأمر 'git Branch'. الصوياسيضيع عملنا المحفوظ في هذا الفرع.

الحالة 2 - يقوم المطور بحذف فرع في مستودع تخزين مشترك

ضع في اعتبارك سيناريو ، حيث يحاول مطور لديه حق الوصول للقراءة / الكتابة حذف الفرع البعيد بقوةباستخدام الأمر 'git push' مع علامة '–delete'.

أصل دفع git $ - حذف الإصلاح السريع

انتاج |

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

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

الحالة 3 - يحذف نص الخطاف ذو الامتيازات الفائقة الفرع

قد يكون هذا أمرًا نادرًا ، ولكنه سيناريو محتمل يتم فيه تشغيل نص الخطاف عند حدث معين لعملية git وتحذف القوة الفروع التي لم يتم دمجها بعد. تستطيعضع في اعتبارك أحد الأوامر المذكورة أعلاه يتم كتابته في نص مكتوب بامتيازات sudo.

الآن ، بعد أن عرفت ما يحدث ، عند حذف الفرع ، دعنا ننتقل إلى هذه المقالة على Git Reflog ونرى كيفية استرداد فرع مفقود.

دروس الاستوديو المرئية للمبتدئين

استعادة فرع محذوف باستخدام Git Reflog

الخطوة 1 : سجلات التاريخ لجميع المراجع

احصل على قائمة بجميع سجلات المحفوظات المحلية المسجلة لجميع المراجع ('الرئيسية' و 'uat' و 'prepod') في هذا المستودع.

اذهب لإعادة التدوين

الخطوة 2 : تحديد طابع التاريخ

كما يمكنك الرجوع من اللقطة أعلاه ، فإن ملف معرّف الالتزام المميز: e2225bb مع مؤشر مؤشر HEAD: 4 هو الشخص الذي إعادة البيع تم إنشاء الفرع من مؤشر HEAD الحالي الذي يشير إلى عملك الأخير.

الخطوه 3 : استعادة

لاستعادة إعادة البيع 'فرع استخدام الأمر'git checkout' تمرير مرجع مؤشر HEAD بمعرف الفهرس - 4.هذا هو مرجع المؤشر عندما تم إنشاء فرع 'preprod' معرّف الالتزام الطويل المميز في لقطة شاشة الإخراج.

بوابة الخروج -b preprod HEAD @ {4}

انتاج |

وفويلا! ' إعادة البيع 'تم استرداد الفرع مرة أخرى مع كل شفرة المصدر الخاصة بك.

ملحوظة : اسمحوا لي بreakup الأمر 'git checkout' المستخدم أعلاه ويساعدك على فهم أفضل:

أمر 'git checkout' هو أمر محمّل بشكل زائد (تمامًا مثل أي وظيفة Java محملة بشكل زائد). هذا هو الجزء الذي يتم فيه استرداد الفرع الفعلي.

يتحقق هذا الأمر الفردي أولاً من الطابع الزمني السابق للتاريخ المشار إليه بواسطة ملف رأس @ {4} المؤشر ثم يقوم بإنشاء فرع باسم 'preprod' باستخدام الخيار '-b' وكذلك تبديل دليل العمل الخاص بك إلى الفرع الذي تم إنشاؤه حديثًا.

هذا يعني أن الفرع الذي تم تبديله سيكون من 'رئيسي' إلى 'prerod' كما هو موضح في شاشة الإخراج.يمكنك الآن دمجه مع فرع 'رئيسي' أو فرع 'تحرير' وفقًا لنموذج التفريع الخاص بك.

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

ما العمل الذي يتم استعادته عند استعادة الفرع المحذوف؟

سيتم استرداد الملفات التي تم تخزينها وحفظها في قائمة فهرس التخزين مرة أخرى. سيتم فقد أي ملفات لم يتم تعقبها. وأنا أيضامن الجيد أن تقوم دائمًا بعملك أو تخفيه.

لجلب مراجع السجل لفرع أو علامة معينة ، قم بتشغيل الأمر - 'git reflog'.

مثال: للتحقق من مراجع السجل لفرع 'uat' وحده ، استخدم الأمر - 'git reflog uat'.

أوامر Git Reflog الفرعية

اذهب لإعادة التدوين

أمر لفتح صفحة الدليل

$ git reflog --help

انتاج |

اذهب لإعادة التدوين تبين

يظهر سجلات المرجع المتوفرة في سطر الأوامر.

بوابة إعادة التدوين show master @ {0}

اذهب لإعادة التدوين تنقضي

يستخدم هذا الأمر لتقليم إدخالات إعادة التدوين الأقدم.

تنتهي صلاحية git reflog

اذهب لإعادة التدوين حذف

يقوم هذا الأمر بحذف المدخلات الفردية من محفوظات إعادة التدوين.

git reflog حذف

اذهب لإعادة التدوين موجود

يتحقق هذا الأمر مما إذا كان المرجع (فرع أو علامة) يحتوي على إدخالات سجل إعادة تسجيل.

يوجد بوابة reflog

بصرف النظر عن الأوامر المذكورة أعلاه ، يأخذ الأمر 'Git Reflog' أوامر فرعية مختلفة وخيارات مختلفة حسب الأوامر الفرعية المذكورة أعلاه. لمزيد من القراءة ، قم بتشغيل ' git reflog –help 'من نافذة المحطة.

بهذا ننتهي من هذه المقالة على Git Reflog.تهدف DevOps إلى إنشاء برامج ذات جودة أفضل بسرعة أكبر وموثوقية أكبر مع دعوة المزيد من التواصل والتعاون بين الفرق. إذا كنت مفتونًا بهذه المقالة ، ج تحقق من من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. تساعد الدورة التدريبية لشهادة Edureka DevOps المتعلمين على فهم ما هو DevOps واكتساب الخبرة في عمليات وأدوات DevOps المختلفة مثل Puppet و Jenkins و Nagios و Ansible و Chef و Saltstack و GIT لأتمتة خطوات متعددة في SDLC.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات بمقال 'Git Reflog' وسنعاود الاتصال بك في أسرع وقت ممكن.