Ответ 1
В основном у вас есть два варианта возврата изменений:
- создать новый коммит, который применяет обратные изменения. Это предпочтительный вариант, так как он не изменяет историю в публичном репозитории.
- Удалите коммиты и принудительно нажмите их.
Первая опция может быть достигнута с помощью git revert
git -revert - Отменить некоторые существующие коммиты
Учитывая один или несколько существующих коммитов, верните изменения, которые вносят связанные исправления, и запишите некоторые новые коммиты, которые записывают их.
Примером может быть git revert -n HEAD~5..HEAD
. Эта команда создает 5 новых коммитов, каждая из которых отменяет одну из последних 5 коммитов текущей отмеченной ветки.
Второй вариант - это фактически удалить коммиты. Обратите внимание, что это изменяет историю в репозитории. Поэтому любой, кто уже потянул за изменения, вероятно, будет довольно удивлен, и все может стать беспорядочным. Тем не менее, вы можете сделать
git reset --hard HEAD~5
git push --force
Первая команда уничтожит любые незафиксированные изменения в текущей рабочей копии. и reset ваш локальный репозиторий состояния текущего HEAD-5 совершает. Вторая команда принудительно нажимает на удаленный по умолчанию (т.е. GitHub). Там любые изменения, отклоняющиеся от текущего локального репозитория, перезаписываются.
Замечание о предупреждении снова: если вы действительно не знаете, что делаете, не используйте этот параметр, так как это может привести к потере данных для вас или других лиц, если это не сделано правильно. Используйте первый вариант, поскольку он будет прозрачно удалять изменения, но без неприятных побочных эффектов перезаписи истории.