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

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

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

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

37
задан Community 23 May 2017 в 11:47
поделиться

1 ответ

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

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

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

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

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

Представьте, что ветки похожи на символические ссылки (или указатели), все, что нам нужно сделать, это позволить ветке 'another-old-branch' указывать обратно на старый идентификатор фиксации. старый коммит все еще там, и его не тронула ваша перебазировка. вроде: «эй, мерзавец, еще одна старая ветка - e547ec0d2, забудь обо всем остальном, что произошло»

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

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

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

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

удачи!

44
ответ дан 27 November 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: