Неправильная папка .git - PullRequest
0 голосов
/ 05 июня 2018

Я настраиваю новый сервер разработки и в то же время закрываю доступ для бывшего агентства.Это включает в себя создание нового репо и избавиться от их.Поэтому я использовал rsync для копирования файлов с живого сервера на dev-сервер.Затем я удалил папку .git, создал новый репозиторий и настроил его для отправки туда.За это время были внесены некоторые изменения в живой сервер, поэтому я решил снова выполнить rsync.Я полностью забыл о папке .git и отменил rsync, как только понял, но я опоздал, и он скопировал часть .git из старого репозитория в новый созданный.Теперь я получаю ошибки, перечисленные ниже.

warning: reflog of 'refs/remotes/origin/snagging-882' references pruned commits
warning: reflog of 'refs/remotes/origin/snagging-896' references pruned commits
warning: reflog of 'refs/remotes/origin/snagging-899' references pruned commits
warning: reflog of 'refs/remotes/origin/snagging-911' references pruned commits
warning: reflog of 'refs/remotes/origin/develop' references pruned commits
warning: reflog of 'refs/remotes/origin/staging' references pruned commits
warning: reflog of 'refs/remotes/origin/review' references pruned commits
error: Could not read c1fd5ccb43ddea672fa5b141a0fdb0d65d813b8a
fatal: Failed to traverse parents of commit 57c5f1c268a7775ebab6ee4f42d94dec2159844f
error: failed to run repack

Можно ли как-нибудь восстановить папку .git или мне нужно создать заново?

Спасибо

1 Ответ

0 голосов
/ 05 июня 2018

Если вы отправили новое хранилище на удаленный сервер, самый безопасный способ решить эту проблему - клонировать новое хранилище в новый локальный каталог и настроить его на использованиерабочее дерево из дерева с поврежденным каталогом .git.

Вот пошаговое руководство:

1. git clone <url-to-new-repo> FreshNewRepo && cd FreshNewRepo
   # Clone the new repo into a new local directory called 'FreshNewRepo'

2. git --work-tree=/path/to/corrupted-repo add -A
   # Set up the 'FreshNewRepo' to use the working tree from the corrupted repo
   # (thereby getting the rsynced files from the old repo), then stage all changes

3. git status
   # At this point, you should have all the changes from corrupted repo
   # in the index of your 'FreshNewRepo'

4. git commit
   # Create a commit to mark that you imported the latest changes from the old repo.

5. (optional) rm -rf /path/to/corrupted-repo
   # Once you're certain that no changes are left behind in the corrupted repo,
   # (either commits not being pushed or uncommitted changes in the working tree)
   # there's no reason to keep it around.

`` `

Вот некоторые дополнительная информация о опции --work-tree.

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