Здесь есть два вида «деструктивных» команд - команды, которые разрушительны для вашей истории мерзавцев, и команды, которые отменяют изменения в вашей рабочей копии.
Команды, которые отбрасывают изменения рабочего дерева :
git reset
git checkout
Как уже упоминалось, сочетание reflog и того факта, что объекты git не удаляются сразу (если вы не включите автоматическую очистку), означает, что вы обычно можете отменить такие операции, как git reset/rebase/merge
.
Эти команды, на самом деле, отбрасывают объекты git , исключая возможность отмены:
git gc
(по умолчанию это удаляет недоступные объекты, возраст которых не менее 2 недель)