كيف يمكنني عكس قطعة كبيرة من الالتزام في Git؟

StackOverflow https://stackoverflow.com/questions/4248237

  •  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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top