Подтвердить что ты не робот

Восстановление от непреднамеренного пропуска во время переустановки

Я просто попытался перестроить очень старую ветку с незначительной модификацией на моего хозяина. Была проблема с объединением только одного из трех связанных файлов, поэтому я сделал немыслимый -skip, думая, что он просто пропустит этот файл, но, как это случилось, он, кажется, пропустил все мои изменения и перевернулся вперед. Итак, теперь rebase закончен, и мои изменения, похоже, исчезли.

Я видел вопрос о отмене rebase, но все это греческое для меня, я вижу reflog, но я не знаю, какой фиксацией была ветка прикрепленном до перезагрузки.

В любом случае, мне действительно не нужно отменять rebase, я просто хочу, чтобы иметь возможность восстановить изменения в этих двух файлах. В любом случае, чтобы сделать это правильно (в противном случае мне нужно будет восстановить вчера резервную копию моего репозитория и выберем биты вручную).

4b9b3361

Ответ 1

Сначала создайте архив вашей рабочей папки git. Это упрощает попытку несколько раз.

Предположим, что произошло следующее:

  • git checkout other-old-branch
  • git мастер переустановки
  • некоторые проблемы (которые вы пропустили)

в этот момент вы все еще находитесь в ветке другого старого типа, и ваш рефлог показывает вам:

6f8348f [email protected]{0}: rebase: <commit message of last commit in another-old-branch>
e547ec0 [email protected]{1}: checkout: moving from another-old-branch to e547ec0d2a558d189464fc57192066b34ec5f28f^0
65cedf8 [email protected]{2}: checkout: moving from master to another-old-branch

Представьте, что ветки похожи на символические ссылки (или указатели), все, что нам нужно сделать, это позволить ветке "другая-старая ветвь" вернуться к старому идентификатору commit. старый фиксатор все еще существует, и он не был затронут вашей rebase. kinda: 'hey git, другая-ветвь-ветвь e547ec0d2, забудьте все, что произошло "

В нашем случае здесь было e547ec0d2a558d189464fc57192066b34ec5f28f, поэтому теперь нам нужно сделать

  • git checkout another-old-branch #, если вы еще не там
  • git reset --hard e547ec0d2a558d189464fc57192066b34ec5f28f

теперь ваша ветка возвращается в нормальное состояние. И вы можете повторить свою перезагрузку.

Обратите внимание, что ваш рефлок уже немного сложнее, чем пример с отменой. но он должен быть где-то там...

Удачи!