Вышеприведенный ответ не совсем корректен - git revert <ID>
не устанавливает ваш репозиторий на этот коммит - git revert <ID>
создает новый коммит, который отменяет изменения, внесенные коммитом <ID>
. Это более или менее способ «отменить» коммит и сохранить его в своей истории как новый коммит.
Если вы хотите установить в своей ветке состояние определенного коммита (как подразумевается в OP), вы можете использовать git reset <commit>
или git reset --hard <commit>
. Первый параметр обновляет только INDEX, оставляя файлы в вашем рабочем каталоге без изменений, как будто вы внесли изменения, но еще не зафиксировали их. С параметром --hard он заменяет содержимое вашего рабочего каталога тем, что было на <commit>
.
Замечание о том, что git reset
изменит историю - если я сделал несколько коммитов, а затем перешел на первый коммит, последующие коммиты больше не будут в истории коммитов. Это может вызвать некоторые серьезные головные боли, если какой-либо из этих потерянных коммитов был перенесен в публичный репозиторий. Убедитесь, что вы используете его только для того, чтобы избавиться от коммитов, которые не были перенесены в другой репозиторий!