Дополнительные альтернативы решениям Jefromi
Решения Jefromi определенно являются лучшими, и вы обязательно должны их использовать.Однако для полноты картины я также хотел показать эти другие альтернативные решения, которые также можно использовать для отмены фиксации (в том смысле, что вы создаете новую фиксацию, которая отменяет изменения в предыдущей фиксации , простокак то, что делает git revert
).
Для ясности, эти альтернативы не лучший способ отменить коммиты , Решения Джефроми , но я просто хочу отметить, что вы можете также использовать эти другие методы для достижения того же, что и git revert
.
Альтернатива 1: аппаратные и программные сбросы
Это очень немногомодифицированная версия решения Чарльза Бейли для Вернуть к фиксации с помощью хэша SHA в Git? :
# Reset the index to the desired commit
git reset --hard <commit>
# Move the branch pointer back to the previous HEAD
git reset --soft HEAD@{1}
# Commit the changes
git commit -m "Revert to <commit>"
Это в основном работает благодаря использованию факта, что программные сбросы оставят состояниепредыдущий коммит, поставленный в области index / staging, который вы можете затем зафиксировать.
Альтернатива 2: удалить текущее дерево и заменить его новым
Это решение разработано в sviРешение ck для Извлечь старый коммит и сделать его новым коммитом :
git rm -r .
git checkout <commit> .
git commit
Подобно альтернативе # 1, это воспроизводит состояние <commit>
в текущей рабочей копии.Сначала нужно сделать git rm
, потому что git checkout
не удалит файлы, которые были добавлены с <commit>
.