первым делом: сделайте резервную копию!затем поработайте над копией этой резервной копии.
, если объекты git все еще находятся в правильном каталоге (.git/objects/xx/xxx…
), вы можете использовать git fsck --full
, чтобы git обнаружил их - он, вероятно, перечислит все объекты в вашемрепозиторий.теперь ищите те, которые помечены commit
и tag
, это те, которые вы хотите восстановить.
я бы, вероятно, использовал скрипт, который создает ветвь для каждого найденного объекта фиксации (например, просто включающие числа rescue-1
, rescue-2
и т. Д.).затем используйте gitk --all
, чтобы визуализировать все ваши ветви и выбрать самую верхнюю (самую последнюю).создайте там новую ветку rescued-master
.
извлеките новую ветку master и запустите git branch --no-merge
.Вы должны получить список разветвленных коммитов, не содержащихся в master.Вы, вероятно, хотите также дать им новое имя ветви.
после того, как вы закончите, удалите все пронумерованные ветви rescue-
.
Надеюсь, что это поможет и даст отправную точку.