Возврат интерактивного git rebase - PullRequest
25 голосов
/ 21 марта 2011

После завершения ветви функций, во время git rebase -i я случайно удалил все свои коммиты. Я не совсем уверен, но я подозреваю, что вместо того, чтобы уничтожать мои коммиты, я заменил всю запись сообщением о коммите.

http://shafiulazam.com/gitbook/4_interactive_rebasing.html говорит:

Последняя полезная вещь, которая интерактивна rebase может сделать это сброс коммитов для вас. Если вместо выбора «выбрать», 'сквош' или 'редактировать' для коммита линия, вы просто удаляете линию, это удалит коммит из история.

Мой вопрос: есть ли способ отменить / отменить это?

Ответы [ 2 ]

56 голосов
/ 21 марта 2011

Если вы только что сделали ребаз, вы можете попробовать как упомянутое здесь :

git reset --hard ORIG_HEAD

как Якуб Наренбский подробнее :

ORIG_HEAD - это предыдущее состояние HEAD, устанавливаемое командами, которые могут иметь опасное поведение, чтобы их было легко вернуть.
Теперь менее полезно, когда Git имеет reflog: HEAD@{1} примерно эквивалентно ORIG_HEAD (HEAD@{1} всегда является последним значением HEAD, ORIG_HEAD является последним значением HEAD перед опасной операцией).

Если вы выполнилинекоторые операции , так как перебазирование, reflog все еще может помочь .

11 голосов
/ 21 марта 2011

Вы можете сделать "git reflog" и вернуть старую ГОЛОВУ.

...