في بعض الأحيان تريد تبديل الفروع، لكنك تعمل على جزء غير مكتمل من مشروعك الحالي. أنت لا ترغب في الالتزام بعمل نصف مكتمل. يتيح لك تخزين Git القيام بذلك. ال أمر جيت خبأ يمكّنك من تبديل الفروع دون الالتزام بالفرع الحالي.
يوضح الشكل أدناه خصائص ودور التخزين فيما يتعلق بالمستودع ودليل العمل.
بشكل عام، معنى المخبأ هو ' تخزين شيء ما بشكل آمن في مكان مخفي .' المعنى في Git هو نفسه أيضًا بالنسبة للمخبأ؛ يقوم Git بحفظ بياناتك مؤقتًا بأمان دون الالتزام.
يأخذ التخزين الحالة الفوضوية لدليل العمل الخاص بك، ويحفظه مؤقتًا لاستخدامه مرة أخرى. تتوفر العديد من الخيارات مع git stash. بعض الخيارات المفيدة مذكورة أدناه:
خبأ العمل
دعونا نفهم ذلك مع سيناريو في الوقت الحقيقي. لقد قمت بإجراء تغييرات على مشروعي GitExample2 في ملفين من فرعين متميزين. أنا في حالة فوضوية، ولم أقم بتحرير أي ملف بالكامل حتى الآن. لذلك أريد حفظه مؤقتًا لاستخدامه في المستقبل. يمكننا تخزينه لحفظه كحالته الحالية. للتخزين، دعونا نلقي نظرة على الحالة الحالية للمستودع. للتحقق من الحالة الحالية للمستودع، قم بتشغيل أمر git Status. يتم استخدام أمر git Status على النحو التالي:
قائمة فارغة جافا
بناء الجملة:
$ git status
انتاج:
من الناتج أعلاه، يمكنك رؤية حالة وجود ملفين لم يتم تعقبهما design.css و ملف جديد.txt متوفر في المستودع. لحفظه مؤقتًا، يمكننا استخدام الأمر git stash. يتم استخدام الأمر git stash على النحو التالي:
بناء الجملة:
$ git stash
انتاج:
في الإخراج المحدد، يتم حفظ العمل باستخدام أمر git stash. يمكننا التحقق من حالة المستودع.
كما ترون، عملي مخبأ في وضعه الحالي. الآن، تم تنظيف الدليل. في هذه المرحلة، يمكنك التبديل بين الفروع والعمل عليها.
Git Stash Save (حفظ Stashes مع الرسالة):
في Git، يمكن إخفاء التغييرات برسالة. لإخفاء التغيير برسالة، قم بتشغيل الأمر أدناه:
بناء الجملة:
$ git stash save ''
انتاج:
سيتم حفظ المخبأ أعلاه برسالة
قائمة Git Stash (التحقق من المخابئ المخزنة)
للتحقق من المخازن المخزنة، قم بتشغيل الأمر أدناه:
بناء الجملة:
$ git stash list
انتاج:
قوائم جافا
في الحالة المذكورة أعلاه، قمت بعمل مخبأ واحد، والذي يتم عرضه كـ ' stash@{0}: قيد التنفيذ قيد الاختبار: ملف 0a1a475 CSS '.
إذا كان لدينا أكثر من مخبأ واحد، فسيتم عرض جميع المخابئ على التوالي بمعرف مخبأ مختلف. النظر في الإخراج أدناه:
وسوف تظهر جميع المخابئ مع الفهرسة باسم خبأ@{0}: خبأ@{1}: وما إلى ذلك وهلم جرا.
تطبيق جيت خبأ
يمكنك إعادة تطبيق التغييرات التي خزنتها للتو باستخدام الأمر git stash. لتطبيق الالتزام، استخدم الأمر git stash، متبوعًا بخيار التطبيق. يتم استخدامه على النحو التالي:
بناء الجملة:
$ git stash apply
انتاج:
يستعيد الإخراج أعلاه المخبأ الأخير. الآن، إذا قمت بالتحقق من حالة المستودع، فسوف تظهر التغييرات التي تم إجراؤها على الملف. النظر في ما يلي انتاج:
من الناتج أعلاه، يمكنك أن ترى أن المستودع قد تمت استعادته إلى حالته السابقة قبل التخزين. يظهر الإخراج كـ ' التغييرات لم يتم تنظيمها للالتزام .'
في حالة وجود أكثر من مخبأ واحد، يمكنك استخدام الأمر 'git stash Apply' متبوعًا بمعرف فهرس المخبأ لتطبيق الالتزام المحدد. يتم استخدامه على النحو التالي:
بناء الجملة:
$ git stash apply
النظر في الإخراج أدناه:
انتاج:
إذا لم نقم بتحديد مخبأ، فسيأخذ Git المخبأ الأحدث ويحاول تطبيقه.
تغييرات جيت خبأ
يمكننا تتبع المخابئ وتغييراتها. لرؤية التغييرات في الملف قبل عملية التخزين وبعد عملية التخزين، قم بتشغيل الأمر أدناه:
بناء الجملة:
$ git stash show
سيُظهر الأمر أعلاه الملف المخبأ والتغييرات التي تم إجراؤها عليها. النظر في الإخراج أدناه:
انتاج:
يوضح الإخراج أعلاه أن هناك ملفين مخبأين، وتم إجراء إدخالين عليهما.
يمكننا تتبع التغييرات التي يتم إجراؤها على الملف بالضبط. لعرض محتوى الملف الذي تم تغييره، قم بتنفيذ الأمر التالي:
بناء الجملة:
$ git stash show -p
هنا، -p يرمز إلى المخبأ الجزئي. سيُظهر الأمر المحدد الملفات والمحتوى الذي تم تحريره، خذ بعين الاعتبار الإخراج أدناه:
انتاج:
يُظهر الإخراج أعلاه اسم الملف مع المحتوى الذي تم تغييره. إنه يعمل بنفس أمر git diff. ال فرق جيت سيُظهر الأمر أيضًا الإخراج الدقيق.
Git Stash Pop (إعادة تطبيق التغييرات المخبأة)
يسمح Git للمستخدم بإعادة تطبيق الالتزامات السابقة باستخدام أمر git stash pop. يقوم خيار الظهور بإزالة التغييرات من المخزن المؤقت وتطبيقها على ملف العمل الخاص بك.
يشبه الأمر git stash pop تمامًا الأمر git stash Apply. والفرق الرئيسي بين هذين الأمرين هو الأمر stash pop الذي يحذف المخبأ من المكدس بعد تطبيقه.
بناء الجملة:
$ git stash pop
سيقوم الأمر أعلاه بإعادة تطبيق الالتزامات السابقة على المستودع. النظر في الإخراج أدناه.
انتاج:
جيت خبأ قطرة (Unstash)
ال جيت خبأ قطرة يتم استخدام الأمر لحذف مخبأ من قائمة الانتظار. بشكل عام، يقوم بحذف أحدث الملفات المخزنة. يجب توخي الحذر قبل استخدام أمر stash drop، حيث أنه من الصعب التراجع عنه إذا تم تطبيقه مرة واحدة.
الطريقة الوحيدة للرجوع إليها هي إذا لم تقم بإغلاق الجهاز بعد حذف المخبأ. سيتم استخدام أمر stash drop على النحو التالي:
عدد صحيح للسلسلة في Java
بناء الجملة:
$ git stash drop
انتاج:
في الإخراج أعلاه، أحدث مخبأ (مخبأ @{0}) تم إسقاطه من ثلاث مخابئ. يسرد أمر stash list جميع المخازن المتوفرة في قائمة الانتظار.
يمكننا أيضًا حذف مخبأ معين من قائمة الانتظار. لحذف مخبأ معين من المخازن المتاحة، قم بتمرير معرف المخبأ في أمر إسقاط المخبأ. سيتم معالجتها على النحو التالي:
بناء الجملة:
$ git stash drop
افترض أن لدي مخبأين متاحين في قائمة الانتظار الخاصة بي، ولا أريد إسقاط مخبأتي الأحدث، ولكني أريد حذف المخبأ الأقدم. وبعد ذلك سيتم تشغيله على النحو التالي:
$ git stash drop stash@{1}
النظر في الإخراج أدناه:
لين السلسلة في جافا
في الإخراج أعلاه، الالتزام مخبأ @{1} تم حذفه من قائمة الانتظار.
جيت خبأ واضح
ال جيت مخبأ واضح يسمح الأمر بحذف جميع المخابئ المتاحة مرة واحدة. لحذف كافة المخازن المتاحة، قم بتشغيل الأمر أدناه:
بناء الجملة:
$ git stash clear
سيؤدي إلى حذف جميع المخابئ الموجودة في المستودع.
انتاج:
يتم حذف كافة المخابئ في الإخراج أعلاه. أمر git stash list فارغ لأنه لا توجد مخابئ متوفرة في المستودع.
فرع جيت ستاش
إذا قمت بإخفاء بعض الأعمال في فرع معين وواصلت العمل في هذا الفرع. ثم قد يؤدي ذلك إلى إنشاء تعارض أثناء الدمج. لذلك، من الجيد تخزين العمل في فرع منفصل.
يسمح أمر git stash Branch للمستخدم بتخزين العمل في فرع منفصل لتجنب التعارضات. بناء الجملة لهذا الفرع كما يلي:
بناء الجملة:
$ git stash branch
سيقوم الأمر أعلاه بإنشاء فرع جديد ونقل العمل المخبأ عليه. النظر في الإخراج أدناه:
انتاج:
في الإخراج أعلاه، يتم نقل العمل المخبأ إلى اختبار فرعي تم إنشاؤه حديثًا. سوف يتجنب تعارض الدمج في الفرع الرئيسي.