Отмена сброса 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 в следующий раз избежать этого