Git restore ветка, которая была удалена как локально, так и на сервере - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь восстановить ветку, которая была удалена около недели назад с удаленного сервера.С тех пор я полностью уничтожил свое локальное репо для этого проекта, поэтому и локальной версии этой ветки тоже нет.Я попробовал "git fsck", но там не увидел ничего связанного с моей веткой.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Одной из возможностей может быть локальное репо где-нибудь, которое не выполнило бы git fetch --prune, которое все равно отслеживало бы последний известный совет.

Но если это не удастся, так как ветка была удалена наНа сервере "около недели назад", истечение срока действия по умолчанию для объектов, на которые нет ссылок, не прошло, поэтому auto-gc не должен был его очищать.В этом репозитории сделайте

git fsck --lost-found --connectivity-only

и git show или, например, git log --online --graph --decorate master..$id идентификаторы в каталоге lost-found/commits, чтобы посмотреть, хорошо ли они выглядят.В любом случае вы можете создать для них новую ветвь, если коммит все еще находится в репо, его история все еще там.

Если вы не хотите работать на живом сервере, вы можете просто rsync илиtar или что-то еще из репо, все это, куда вы хотите, а затем говорите на досуге.Возможно, вам придется удалить любые беспризорные find -name \*.lock файлы, если кто-то нажимал во время копирования, или поиграть с конфигами, если есть какие-то жестко настроенные пути, выходящие за пределы самого репо, но это необычно.

0 голосов
/ 15 февраля 2019

Найдите sha с помощью git reflog (последнего коммита в ветви) и выполните git checkout -b <branch> <sha> в командной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...