Отмена сброса git?
какой самый простой способ отменить
git reset HEAD~
4 ответов
короткий ответ:
git reset 'HEAD@{1}'
ответ:
Git ведет журнал всех обновлений ref (например, checkout, reset, commit, merge). Вы можете просмотреть его, введя:
git reflog
где-то в этом списке есть фиксация, которую вы потеряли. Допустим, вы просто набрали git reset HEAD~
и хотите отменить его. Мой reflog выглядит так:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
первая строка говорит, что HEAD
0 позиций назад (другими словами, текущая позиция) - 3f6db14; она была получена сбросив значение HEAD~
. Вторая строка говорит, что HEAD
1 позиция назад (другими словами, состояние до сброса) - d27924e. Он был получен путем проверки конкретной фиксации (хотя сейчас это не важно). Итак, чтобы отменить сброс, запустите git reset HEAD@{1}
(или git reset d27924e
).
если, с другой стороны, вы выполнили некоторые другие команды с тех пор, что глава обновления, фиксация вы хотите не будет в верхней части списка, и вам нужно будет искать через reflog
.
одно последнее примечание: может быть проще посмотреть на reflog
для конкретной ветви, которую вы хотите сбросить, скажем master, а не HEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
это должно иметь меньше шума, чем в общем HEAD reflog
.
старый вопрос, и выложили ответы отлично работают. Но я предложу другой вариант.
git reset ORIG_HEAD
ORIG_HEAD
ссылается на фиксацию, что HEAD
ранее ссылки.
моя ситуация была немного другой, я сделал git reset HEAD~
три раза.
чтобы отменить его, я должен был сделать
git reset HEAD@{3}
так что вы должны быть в состоянии сделать
git reset HEAD@{N}
но если вы сделали сброс git с помощью
git reset HEAD~3
вы должны
git reset HEAD@{1}
As {N} представляет количество операций в Reflog. Как отметил Марк в комментариях.
1.Использовать git reflog
чтобы получить обновление всех ссылок.
2.git reset <id_of_commit_to_which_you_want_restore>
3 в следующий раз избежать этого