Лучший способ восстановить папку .git

Из-за какой-то ошибки в коде мы потеряли полный каталог, контролируемый GIT. Восстановление файлов не было проблемой; TimeMachine позаботился об этом. Однако TimeMachine, по-видимому, не создал резервную копию папки .git.

Есть ли лучший способ восстановить/воссоздать папку .git, чем получить каталог с главного сервера или другого компьютера?

Заранее спасибо за любую полезную подсказку.


person Max Wyss    schedule 16.07.2014    source источник
comment
Если вы внесли все изменения, почему вы стесняетесь использовать своего мастера для извлечения вашей папки .git?   -  person flob    schedule 16.07.2014
comment
TimeMachine, по-видимому, не создал резервную копию папки .git. Это страшная мысль. Кто-нибудь может это подтвердить? Как насчет других точечных каталогов?   -  person Thilo    schedule 16.07.2014
comment
Быстрый поиск в Google показывает, что Time Machine необходимо настроить вручную, чтобы избежать резервного копирования каталогов .git, поэтому, если вы специально не настроили его таким образом, я бы не стал об этом беспокоиться.   -  person Rob Wise    schedule 16.07.2014
comment
Обновление: каталог .git был восстановлен. Не замечать - моя вина. Однако каким-то образом файл .gitconfig был перепутан, и я получаю искаженное сообщение об ошибке… дальнейшие исследования. Так что спасибо за помощь в любом случае.   -  person Max Wyss    schedule 17.07.2014


Ответы (2)


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

  1. Создайте новую папку и перейдите к ней.
  2. Клонировать голый репо:

    git clone --bare https://path/to/project .git

  3. Скопируйте локально восстановленные файлы в папку .git (в то же относительное расположение, что и раньше).

  4. Отметьте новое репо как не голое:

    git config --local --bool core.bare false

  5. Наконец сбросьте индекс:

    git reset HEAD -- .

person metacubed    schedule 16.07.2014
comment
Не проще ли нормально клонировать в новый запасной каталог и переместить папку .git из запасного каталога в папку проекта (где она была изначально)? - person Readren; 28.05.2016
comment
@Прочитайте вопрос о восстановлении каталога .git без загрузки всего с сервера. - person metacubed; 28.05.2016

Есть 2 варианта:

1. restore it form backup (which i assume you don't have) 
2. clone the repository again and compare the content to add the modified content.

Поскольку .git — это просто папка с содержимым.

Если вы не сделали резервную копию с помощью Time Machine, вам придется снова клонировать ее.

person CodeWizard    schedule 16.07.2014