В оригінальному плакаті зазначено:
Найкращою відповіддю, яку хтось міг дати мені, було використання git revertX разів, поки я не досягну бажаного завдання.
Отже, скажімо, я хочу повернутись до зобов’язання, яке становить 20 фіксів, я повинен був би виконати його 20 разів.
Чи є простіший спосіб зробити це?
Я не можу використовувати скидання, оскільки ця репо-версія є загальнодоступною.
Не обов’язково використовувати git revertX разів. git revertможе прийняти діапазон комісій як аргумент, тому вам потрібно використовувати його лише один раз, щоб відновити діапазон комітетів. Наприклад, якщо ви хочете відновити останні 20 комітів:
git revert --no-edit HEAD~20..
Діапазон фіксації HEAD~20..короткий для HEAD~20..HEAD, і означає "починати з 20- го батьківського комітету HEAD і повертати всі комісії після нього до HEAD".
Це поверне останні 20 комісій, припускаючи, що жоден з них не є об'єднанням. Якщо є об'єднання об'єднань, ви не можете відновити їх усі в одній команді, вам потрібно буде відновити їх окремо
git revert -m 1 <merge-commit>
Зауважте також, що я перевірив, використовуючи діапазон із git revertвикористанням git версії 1.9.0. Якщо ви використовуєте старішу версію git, використання діапазону з git revertможливим або не може працювати.
У цьому випадку git revertвіддається перевага git checkout.
Зауважте, що на відміну від цієї відповіді, яка говорить про використанняgit checkout , git revert
фактично видалить будь-які файли, додані до будь-якого з комітетів, які ви ревертуєте , що робить це правильним способом відновити діапазон змін.
Документація