Восстановление файлов после сброса хард из другой ветки - PullRequest
0 голосов
/ 30 октября 2018

Это общий вопрос, и я надеюсь, что вы тоже можете мне помочь. Я ничего не спрятал и вообще ничего не делал. Я наивно «запустил» инструмент, который сделал следующее с моим GitHub:

git branch -f another-branch
git checkout another-branch
git reset --hard origin/my-work
git add -A .
git commit -a -m 'magical update'
git push origin another-branch --force
git checkout my-work (a few weeks ago)

Я обнаружил, что довольно легко восстановить Unstaged файлы. Я просто использовал команду:

git checkout path / to / file

Я попробовал несколько решений здесь и не решил проблему. Я надеюсь, что мы сможем найти прямое решение этой проблемы. Так что, как я надеюсь, GitHub использует временную настройку для выхода из этой ситуации. Предупреждение не произошло со мной из-за команды --force.
enter image description here Ситуация: Файлы с тем же именем, что и в ветке my-work, теперь заменены и датированы несколько недель назад . Новые файлы уже восстановлены с помощью git checkout.

1 Ответ

0 голосов
/ 30 октября 2018

Попробуйте git reflog

Это должно дать вам локальную историю действий git, которые вы сделали. Проверка конкретного коммита из reflog должна привести вас к тому, что файл, который вы хотите, все еще существует.

> git reflog
> git checkout HEAD@{reflog-index}

Ссылка: https://git -scm.com / docs / git-reflog

Справочные журналы, или «reflogs», записывают, когда кончики веток другие ссылки были обновлены в локальном хранилище. Reflogs являются полезно в различных командах Git, чтобы указать старое значение ссылка. Например, HEAD@{2} означает «где HEAD раньше было два двигается назад ", master@{one.week.ago} означает" где мастер указывал неделю назад в этом локальном хранилище "и т. д.

...