#git
Вопрос:
На следующем рисунке показана работа жесткого сброса. Как получить file.txt (v3)? Есть ли способ продвинуть голову вперед?
Комментарии:
1. Фиксация (здесь выше
38eb946
) больше не является частью ветви, но она все еще существует в репозитории. Вы можете воссоздать там ветвь или сбросить текущую на ней.
Ответ №1:
Вы должны восстановить его из рефлога:
git reflog --all # Write down the commit hash you need to recover git cherry-pick lt;commit-hash-to-recovergt;
Комментарии:
1. Всегда ли сохраняется оплавление? Я имею в виду, что он никогда не теряет информацию? Таким образом, фиксация жесткого сброса всегда может быть восстановлена?
2. Может быть восстановлен до сборки мусора git.
3. @переменная: повторные записи сохраняются до тех пор, пока они поддерживаются. Это настраивается: как то, сохраняются ли вообще записи в журнале, так и если да, то как долго длится запись в журнале. По умолчанию для пользовательских (не пустых) репозиториев записи будут храниться не менее 30 дней. Тем не менее, не отбрасывайте ссылки, которые вы намерены сохранить: не используйте
git reset --hard
их для перемещения по истории; это не то, для чего они предназначены.4. @torek — требуется ли сброс, выполненный в смешанном или мягком режиме, также для восстановления журнала?
5. @переменная: на самом деле проблема не в
--hard
выборе, проблема в перемещении. Но вы бы не стали перемещаться со смешанным или мягким сбросом, просто чтобы посмотреть на фиксацию в первую очередь, так как это не обновляет ваши файлы рабочего дерева. Общая идея здесь заключается в том, что если вы хотите просмотреть историческую фиксацию, используйте для этого проверку с отсоединенной ГОЛОВКОЙ (git switch --detach lt;commitgt;
например).