HEAD
- последняя фиксация извлеченной ветви.
master
- это ветвь (основная ветвь, по соглашению), тогда как HEAD
- это место в истории для извлеченной ветки. HEAD
относительно ветви, в которой вы находитесь.
git reset --soft
оставит ваши изменения в рабочем дереве без каких-либо обязательств для вас делать все, что вам нравится. git reset --hard
восстановит рабочее дерево до состояния, в котором оно находилось при коммите, в который вы сбросили.
- Никаких других команд не требуется.
Во-первых, чтобы сохранить коммит на тот случай, если вы захотите проверить его позже, сделайте ветку:
git checkout -b my_bad_commit
(или, альтернативно, git branch my_bad_commit
, как указано в комментарии Ларсмана.)
Затем вернитесь к master
или к любой ветке, в которой вы были, и выполните сброс:
git checkout branch_with_bad_commit
git reset --hard HEAD^
HEAD ^ переводится как «родитель HEAD», который вы даже можете сложить для HEAD ^^ = 2 коммитов обратно. Подробнее об этом читайте в главе книги сообщества git по отменить в git