Как восстановить старый коммит перед перезагрузкой - PullRequest
0 голосов
/ 08 января 2020

Скажи, я работаю над веткой, которая называется «последняя». Закончив задание, я совершаю работу. Когда я перебрасываю изменения из ветки «master» в «последнюю» ветку, во время разрешения конфликта я случайно принимаю все изменения из master и, как результат, к концу, когда перебазирование завершено, я потерял много моя работа выполнена в «последнем».

Учитывая, что я сделал ребазинг в «последней» ветке, коммиты для выполненной мной работы перезаписаны принятыми мною разрешениями конфликтов? Мои предыдущие (оригинальные) коммиты исчезли? И если нет, то как я могу получить их, пожалуйста. Спасибо.

1 Ответ

1 голос
/ 08 января 2020

Оригинальные коммиты, сделанные вами в ветке latest, все еще должны быть доступны в рефлоге git. Текущая ветка latest теперь имеет новые, переписанные коммиты. Вы можете попытаться отфильтровать рефлог, хотя самым быстрым выходом из этого является простой сброс latest в ветку удаленного отслеживания origin/latest:

# from latest
git reset --hard origin/latest

Эта опция предполагает, что после сделав коммиты, о которых вы говорили, вы отправили на удаленный компьютер, тем самым обновив (локальную) ветвь отслеживания origin/latest. Если это так, то ветвь отслеживания должна выглядеть так же, как и до перебазирования.

Если вы не сделали pu sh свою локальную ветку после совершения коммитов, то reflog может все еще быть в состоянии помочь вам. Тип git reflog. Затем найдите коммит, который был ГОЛОВКОЙ вашей ветки перед неудачной перезагрузкой. Вы можете использовать сообщение коммита, чтобы помочь вам там. Получив SHA-1 этого коммита, снова выполните полный сброс:

# from latest
git reset --hard <SHA-1 of your old HEAD>
...