Как восстановить рабочее дерево после случайного удаления ветки

У меня есть рабочее дерево Git, связанное с веткой, которая каким-то образом была удалена.

Кажется, ничего не работает. git status сообщает Initial commit.

У меня есть незафиксированные изменения. Как вернуть все в нормальное состояние в этом рабочем дереве?


person Brent Bradburn    schedule 10.08.2018    source источник


Ответы (1)


Git пытается помешать вам удалить ветки, которые в настоящее время проверены в любом рабочем дереве.

Однако с некоторыми версиями инструментов, связанных с Git, может быть возможно удалить проверенную ветку (я сделал это, используя gitk, запущенный из другого рабочего дерева). Если это произойдет, рабочее дерево запутается, и вы увидите сообщение вроде unknown revision HEAD и bad revision 'HEAD'. Обычные инструменты восстановления, такие как gitk --all и git stash, становятся нефункциональными из-за этой путаницы.

Лучше всего для спасения рабочего дерева (особенно если у вас есть незафиксированная работа) выполнить извлечение точной ревизии, которая ранее была связана с веткой. Один из способов включить это — запустить gitk --reflog (который работает, даже если gitk --all не работает) и воссоздать ветку в правильном месте.

После того, как вы воссоздали ветку, вы можете проверить ее и продолжить работу.


Интересно: Почему git worktree add создать ветку, и можно ли ее удалить?

person Brent Bradburn    schedule 10.08.2018