возврат к предыдущему коммиту без разрушения текущего - PullRequest
6 голосов
/ 01 февраля 2012

Итак, я хотел вернуться к своему предыдущему коммиту, не разрушая последний, который у меня есть сейчас.Как мне это сделать?Выполнение git reset HARD уничтожит мой текущий коммит, верно?

Ответы [ 3 ]

13 голосов
/ 01 февраля 2012

Если у вас нет изменений, которые вы не зарегистрировали, git checkout $OLD_COMMIT доставит вас туда, а git checkout $BRANCH вернет вас.

Это, возможно, поставит вас на отстраненную голову; подробности смотрите в git checkout --help, но если все, что вам нужно, это запустить тесты на старой версии или что-то в этом роде.

Вы также можете быть заинтересованы в: git stash - для временного хранения незафиксированных изменений git show $SHA1 чтобы показать изменения старого коммита как diff git show ${REF}:${PATH} чтобы показать содержимое $ PATH в $ REF

(Ref может быть sha, или веткой, или чем-то еще, в последнем вызове git show.)

1 голос
/ 01 февраля 2012

Использование git revert. Это позволяет отменить определенный коммит без нарушения коммитов, так как.

Если я правильно понимаю ваш случай, у вас есть:

* abc123de a_good_commit
* bc123def a_bad_commit
* c123def4 another_good_commit

Вы можете либо git revert HEAD^, либо использовать определенный хеш: git revert bc123def.

0 голосов
/ 01 февраля 2012

Выполнение любого вида reset с предыдущим коммитом удалит ваши последующие коммиты из вашей ветви, так что они больше не будут его частью. коммит - это предметы, которые вы видите, когда делаете git log.

Это не означает, что эти коммиты мгновенно уничтожаются, но вы не хотите от них избавиться,Вы, вероятно, захотите создать другую ветку и использовать ее для просмотра вашего предыдущего коммита, чтобы в вашей оригинальной ветке не было последних коммитов.(Ключевые слова для создания новой ветви: git branch <name> или git checkout -b <name>. **)

Хард-против-мягкий сброс больше связан с тем, что происходит с файлами в вашем рабочем дереве, и, что более важно, с незафиксированнымиизменения.По сути, единственное, что уничтожается, когда вы указываете --hard, это ваши незафиксированные изменения.Пока вы оставили ветку при последнем коммите (или помните идентификатор коммита), вы всегда можете восстановить файлы, переключившись обратно на эту ветку или коммит.(то есть git checkout)

** На самом деле вы можете осмотреться, не создавая дополнительную ветвь, и в ответе Даниэля Питтмана это описано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...