باعتبارنا مهندس برمجيات أو مطور ويب، قد نحتاج إلى دفع العديد من الالتزامات إلى مستودع Git الخاص بنا.
ومع ذلك، هناك بعض الحالات الأخرى التي نريد فيها حفظ الملفات التي لن يتم دفعها إلى مستودع Git الخاص بنا. قبل إصدار أي التزام، قد نرغب في تنفيذ بعض التغييرات الإضافية في بعض الأحيان.
ونتيجة لذلك، نحتاج إلى التراجع عن الالتزام الأخير من خلال مستودع Git الخاص بنا. سنرى كيف يمكننا التراجع عن الالتزام الأخير في هذا الموضوع.
التراجع عن Last Git Commit مع إعادة التعيين
يمكننا بسهولة التراجع عن التزام git الأخير عن طريق تنفيذ الأمر، على سبيل المثال، 'إعادة ضبط البوابة' جنبا إلى جنب مع خيار، أي، '-ناعم' من شأنها حماية جميع التغييرات التي تم إجراؤها على ملفاتنا. علينا أن نصف الالتزام بالتراجع وهو 'HEAD~1'.
سيتم حذف الالتزام الأخير لـ git من مستودع Git الخاص بنا.
$ git reset --soft HEAD~1
في هذا التدوين،
'الرأس~1': هذا يعني أننا نرغب في إعادة تعيين هذا الرأس إلى التزام واحد قبل داخل سجل السجل.
تقسيم سلسلة C++
$ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2)
ماذا سيكون تأثير الأمر أعلاه؟
الأمر، أي: 'إعادة ضبط البوابة' يمكن اعتباره أمرًا، أي عكسًا للأمر 'إضافة بوابة' ، وإدراج الملفات بشكل أساسي في فهرس Git.
إذا وصف خيار '-ناعم' لن يقوم Git بتغيير الملفات الموجودة داخل الفهرس أو دليل التنفيذ على الإطلاق.
على سبيل المثال، قمنا بتضمين ملفين ضمن التزامنا الأخير، على الرغم من أننا نرغب في تنفيذ بعض التغييرات في هذا الملف.
عمر دارميندرا
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit
ونتيجة لذلك، سوف نطبق 'إعادة ضبط البوابة' جنبا إلى جنب مع خيار '-ناعم' للتراجع عن الالتزام الأخير وتنفيذ بعض التغييرات الإضافية أيضًا.
$ git reset --soft HEAD~1 $ git status
على سيد الفرع
فرعنا هو السيد/الأصل للأمام من خلال الالتزام 1 (طبق 'git Push' لنشر التزاماتنا المحلية).
التعديلات الواجب الالتزام بها:
(apply 'git restore --staged …' to unstage)
الملف الجديد: file1
$ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
كما نرى، لا يزال الملف موجودًا في الفهرس عن طريق التراجع عن الالتزام الأخير (التعديلات التي سيتم الالتزام بها) على الرغم من حذف الالتزام.
لقد قمنا بالالتزام الأخير في مستودعنا بنجاح.
الالتزام بإعادة التعيين الثابت لـ Git
يمكننا أن نعتبر في القسم أعلاه أننا نستطيع ذلك بسهولة التراجع عن الالتزام الأخير والحفاظ على التعديلات يتم تنفيذه على أي ملف داخل الفهرس. لكن في بعض المواقف، نرغب ببساطة في إزالة التغييرات والالتزامات التي تم إجراؤها على أي ملف.
إنه هدف للخيار، أي، '-صعب' .
للتراجع عن الالتزام الأخير وإزالة كل تعديل داخل الفهرس والدليل، قم بتنفيذ أمر، على سبيل المثال، 'إعادة ضبط البوابة' جنبا إلى جنب مع الخيار، أي، '-صعب' ووصف الالتزام قبل الأمر HEAD ('الرأس~1') .
$ git reset --hard HEAD~1
ستتم إزالة كل التزام وتعديل من الفهرس والدليل بعد استخدام ملف '--صعب' يأمر. لذلك يجب أن نكون حذرين.
على سبيل المثال، قمنا بتخصيص أي ملف جديد باسم 'file1' إلى مستودع Git الخاص بنا.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
الآن، افترض أننا نرغب في التراجع عن الالتزام الأخير وإزالة كل تغيير.
$ git reset --hard HEAD~1
الآن، HEAD في الالتزام الثاني 90f8bb1
الآن، دعونا نتحقق من حالة مستودع git الخاص بنا.
سلسلة Js متعددة الأسطر
$ git status
على سيد الفرع
فرعنا معاصر للسيد/الأصل (قم بتطبيق أمر 'git Push' لنشر التزاماتنا المحلية).
مشتق جزئي من اللاتكس
الآن، لا يوجد شيء للالتزام به، وشجرة العمل نظيفة.
التزام Git المختلط لإعادة التعيين
احتفظ بالتعديل داخل دليل العمل الخاص بنا، ولكن ليس داخل الفهرس. علينا أن نطبق الأمر، أي .، 'إعادة ضبط البوابة' جنبا إلى جنب مع الخيار، أي، '-مختلط' . بعد هذا الأمر، يتعين علينا إلحاق 'HEAD~1' ببساطة بالالتزام الأخير.
$ git reset --mixed HEAD~1
على سبيل المثال، قمنا بتضمين أي ملف باسم 'file1' ضمن أي التزام نطلب التراجع عنه.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
ببساطة، نقوم بتنفيذ الأمر، أي: 'إعادة ضبط البوابة' جنبا إلى جنب مع الخيار، أي، '-مختلط' للتراجع عن الالتزام الأخير.
ونتيجة لذلك، '-مختلط' الأمر هو 'مزج' من بين عمليات إعادة الضبط الصلبة والناعمة، لذلك اسمها.
على سيد الفرع
فرعنا هو السيد/الأصل للأمام من خلال الالتزام 1 (طبق 'git Push' لنشر التزاماتنا المحلية).
الملفات التي لم يتم تعقبها: (طبق 'git add …' لإضافة ما سيتم الالتزام به داخله)
file1
لم يتم تضمين أي شيء للالتزام ولكن الملفات التي لم يتم تعقبها موجودة (طبق 'git Track' للتتبع).
لذلك، اكتشفنا ممارسة أخرى للتراجع عن الالتزام الأخير من خلال الحفاظ على التعديلات التي تم إجراؤها على الملفات.
التراجع عن الالتزام الأخير مع العودة
قم بتطبيق الأمر، أي 'جيت العودة' ووصف الالتزام بالرجوع، على سبيل المثال، 'رأس' لالتزام التاريخ للعودة إلى التزام Git الأخير.
$ git revert HEAD
يختلف الأمر 'git revert' عن الأمر 'gitset' لأنه يمكنه تسجيل أي التزام جديد مع بعض التعديلات المحددة عن طريق تدهور الالتزام الأخير.
استبدال الكل في سلسلة جافا
يمكننا وصف 'HEAD~1' باستخدام الأمر 'gitset' لأن أمر إعادة التعيين هذا سيحدد أي مكان جديد للرأس أثناء تدهور الالتزام الموصوف.
ونتيجة لذلك، سنلتزم بالتعديلات مرة أخرى على بعض الملفات للعودة إليها ونلتزم بعدم تنفيذها. لقد التزمنا بأي ملف جديد لمستودع Git الخاص بنا ولكننا نرغب في إلغاء هذا الالتزام.
$ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
في حالة تنفيذ الأمر 'git revert'، سيفتح Git محرر النصوص الخاص بنا لتنفيذ التعديلات تلقائيًا.
ستظهر رسالة جديدة مع تجزئة التزام جديدة عندما ننتهي من تنفيذ رسالة التزام.
[master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1
إذا أردنا التحقق من تاريخ Git مرة أخرى، فيمكننا ملاحظة إضافة التزام جديد للتراجع عن الالتزام الأخير من خلال مستودعنا.
$ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit