كيف يمكنني عكس قطعة كبيرة من الالتزام في Git؟
-
27-09-2019 - |
سؤال
أتساءل عما إذا كانت هناك طريقة لعكس قطعة كبيرة من الالتزام بسرعة.
يمكنني توليد أ diff
بين اثنين من الالتزامات أو HEAD
لرؤية الفرق.
كيف يمكنني عكس واحدة فقط من هؤلاء الصخ (أو الأفضل من ذلك ، مجموعة من التلال المحددة)؟
المحلول
git checkout -p $REF -- path/to/file
أين $REF
هو اسم المرجع أو معرف الالتزام الذي يحدد الالتزام الذي تريد أن تأخذ حالة الملف منها. على سبيل المثال ، لإرجاع التغييرات التي تم إجراؤها بشكل انتقائي في الالتزام الأخير ، استخدم HEAD^
.
نصائح أخرى
git difftool $REF -- /path/to/file
أين $REF
هو اسم المرجع أو معرف الالتزام الذي يحدد الالتزام الذي تريد أن تأخذ حالة الملف منها. على سبيل المثال ، لإرجاع التغييرات التي تم إجراؤها بشكل انتقائي في الالتزام الأخير ، استخدم الرأس^.
تم الإجابة بالفعل على هذا السؤال من قبل cdhowie ، لكنني أجد أنه من أجمل إلى حد ما استخدام difftool التفاعلية مثل meld
لاستعادة الصخ/خطوط الكود القديمة بشكل انتقائي ، خاصةً إذا كان هناك خطأ تم إنتاجه حديثًا ويصعب العثور عليه في الكود.
لاستعادة ملف محذوف من التزام سابق ، استخدمت الإجابة هنا:
ابحث واستعادة ملف محذوف في مستودع GIT
git checkout <deleting_commit>^ -- <file_path>