Най-добрият начин за възстановяване на папка .git

Поради някаква грешка в кода загубихме пълна директория, контролирана от GIT. Възстановяването на файловете не беше проблем; TimeMachine се погрижи за това. Очевидно обаче TimeMachine не е архивирал папката .git.

Има ли по-добър начин за възстановяване/създаване на папка .git от извличане на директорията от главния сървър или друга машина?

Благодаря предварително за всеки полезен съвет.


person Max Wyss    schedule 16.07.2014    source източник
comment
Ако сте натиснали всички промени, защо се колебаете да използвате вашия master, за да извлечете вашата .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. Маркирайте новото репо като non-bare:

    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
@Readren зададеният въпрос за възстановяване на директорията .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