Как восстановить поврежденный/частично удаленный репозиторий мерзавца

Из vim:

:set ruler

Получить его постоянно, в Вашем vim конфигурационный файл, добавляет это без ::

set ruler
7
05.03.2013, 23:56
1 ответ

Все фиксации и файлы, на которые они ссылаются, были бы сохранены как объекты в objects каталог. Мерзавец создает тех как только для чтения, таким образом, они должны все все еще присутствовать.

Для восстановления я советовал бы создавать новый, пустой репозиторий и копировать содержание поврежденного репозитория objects каталог в тот из нового. Это должно получить Вас к точке, где мерзавец, по крайней мере, распознает, что это - репозиторий, и это будет иметь все Ваши объекты. Работа с копией также поможет постараться не наносить еще больше ущерба при попытке починить вещи.

Shell управляет для создания временного репозитория и копии по объектам:

git init /tmp/recovery
cd /tmp/recovery
cp -r /path/to/broken/repo/.git/objects .git

После того как это сделано, Вы могли использовать git fsck получить список объектов, на которые не ссылается ничто. Это должно включать всех глав филиала, но это также включало бы любые фиксации, которые были сделаны устаревшими git commit --amend или путем перебазирования.

Так как у Вас все еще есть каталог журналов, который, вероятно, будет еще большей справкой. Должен быть a logs/refs/heads/<branch> файл для каждого ответвления, которое Вы имели. Второй столбец последней строки будет содержать идентификатор фиксации, которая была во главе того ответвления, когда удаление было сделано. Должен также быть logs/HEAD с той же информацией для того, где ГОЛОВА была, но если Вы не работали с отдельной ГОЛОВОЙ, вероятно, лучше просто восстановить ответвления и затем контроль ответвление обычно.

Для каждого ответвления, что Вы хотите восстановить Вас, может работать:

git branch <name> <commit_id>

После того как Вы восстановили ответвления, которые можно скопировать по файлу конфигурации, и необходимо быть справедливо близко к тому, где Вы были с последней фиксации.

11
27.01.2020, 20:16

Теги

Похожие вопросы