Первый изменит ветку так, чтобы она указывала на указанный вами коммит. Коммиты, которые были впереди этого, будут потеряны, если на них нет другой ссылки (ветка или тег). Существует reflog (git reflog), который хранит историю того, что было извлечено (по умолчанию это сохраняет ценность последних 90 дней)
Второй переключит ветку на то, что вы указали. Поскольку вы указали фиксацию, а не локальную ветку, вы не будете отслеживать любые изменения, которые вы фиксируете здесь. За исключением reflog, вы потеряете эти коммиты, которые были сделаны после первой проверки, когда вы делаете последующую проверку, отличную от текущей фиксации или HEAD.
Третий способ, которым вы можете "отменить" работу, это поместить "-". после вашей второй команды. Это изменит ваше рабочее дерево до состояния, в котором находятся файлы в указанном вами коммите. У вас все равно будет проверена та же ветка, и она все равно будет указывать на тот же коммит. Когда вы запустите «git status», вы увидите, что все изменения в вашем рабочем каталоге будут выглядеть так, как будто вы редактировали свои файлы, чтобы они выглядели так, как они были в указанном вами коммите. Фиксация этих изменений создаст новый коммит, который эффективно «отменяет» то, что последующие коммиты выполнят заранее, если сделал указанный. Ваша текущая ветка теперь будет указывать на этот коммит. Это хорошая практика, если другие могут зависеть от коммитов, которые вы действительно хотите стереть.