git reset
Пересунути гілку на інший коміт, наприклад скасувати останні коміти
Що робить
git reset переставляє поточну гілку на вказаний коміт. HEAD~1 — це коміт перед останнім, HEAD~3 — на три назад. Коміти після нього зникають із гілки, а що станеться з їхніми змінами, вирішує прапорець.
--soft залишає зміни в індексі: їх можна одразу закомітити знову, наприклад одним комітом замість кількох. Без прапорця (режим --mixed) зміни лишаються у файлах, але виходять з індексу. --hard викидає їх зовсім.
Обережно. --hard стирає і скасовані коміти, і всі незакомічені правки у відстежуваних файлах. Коміти, які вже є на сервері, краще скасовувати через git revert: reset переписує історію, і звичайний git push не пройде.
Синтаксис
git reset --soft <коміт>
git reset <коміт>
git reset --hard <коміт>Приклади
Скасувати останній коміт, залишивши його зміни в індексі
git reset --soft HEAD~1те саме:
git reset --soft HEAD^reset— пересунути гілку на інший коміт--soft— зміни лишаються в індексіHEAD~1— на один коміт назад
Викинути останній коміт разом з усіма його змінами
git reset --hard HEAD~1те саме:
git reset --hard HEAD^reset— пересунути гілку--hard— стерти зміни — без поверненняHEAD~1— на один коміт назад
Пов’язані команди
- git restore — Скасувати правки у файлі або прибрати його з індексу
- git revert — Скасувати коміт новим комітом, не переписуючи історію
- git commit — Зберегти зміни з індексу в історію як новий коміт