2013-06-26 15 views
8

Przepraszamy za niejednoznaczny tytuł. Jeśli ktokolwiek może wymyślić coś lepszego, edytuj to, aby dać mi znać.Naprawianie uszkodzonego repozytorium git. Brak domyślnej wersji "HEAD"

Niedawno usunąłem repozytorium git i wyrejestrowałem nową kopię z serwera. Niestety, kiedy to zrobiłem, zapomniałem, że używam git-new-workdir (myślałem, że sklonowałem moje repo sprawdzane dwa razy). Teraz nie mogę nic zrobić w moim „WORKDIR”:

$ git log 
fatal: bad default revision 'HEAD' 

i git status ustępuje więcej zmian niż powinno. Czy ktoś ma jakieś przemyślenia na temat tego, jak mogę to naprawić?

Więcej informacji:

Running git fsck daje mi następujące:

$ git fsck 
notice: HEAD points to an unborn branch (dipole_fix) 
missing blob d92f4a4f53c95c375146d9623910d8ec214aa02f 
missing blob 7d81095605082af3252a47b47d81e48d4a78a668 
missing blob f5d21b7785c4bca4efaa91ce5ef5a8bd82d98792 
missing blob 79d3ad61db697ca7e89dbfd089a472dab0a7851b 
missing blob 2cf0e64cbc0a816d7dc1b26fef43c2eb7c4fb6ac 

Na co warto, mam zdalny oddział z dipole_fix oddział na niego. Powinien być (stosunkowo) aktualny.

Aktualizacja 1 - Patrząc na zawartość .git w katalogu roboczym, wydaje się, że mam kilka zwisających dowiązań symbolicznych.

lrwxrwxrwx 1 mgilson mgilson  39 2012-04-26 10:43 remotes -> /orig_repo/.git/remotes 
lrwxrwxrwx 1 mgilson mgilson  40 2012-04-26 10:43 rr-cache -> /orig_repo/.git/rr-cache 
lrwxrwxrwx 1 mgilson mgilson  35 2012-04-26 10:43 svn -> /orig_repo/.git/svn 

Update 2 - Naievly łącząc remotes do /orig_repo/refs/remotes wydaje się pozbyć z głowy "złe" problem, ale teraz git status daje mi:

error: unable to find d92f4a4f53c95c375146d9623910d8ec214aa02f 
error: unable to find d92f4a4f53c95c375146d9623910d8ec214aa02f 
error: unable to find f5d21b7785c4bca4efaa91ce5ef5a8bd82d98792 
error: unable to find f5d21b7785c4bca4efaa91ce5ef5a8bd82d98792 
error: unable to find 79d3ad61db697ca7e89dbfd089a472dab0a7851b 
error: unable to find 79d3ad61db697ca7e89dbfd089a472dab0a7851b 

Odpowiedz

2

głowa jest łatwo naprawić, tylko git checkout coś. (lub możesz nawet edytować .git/HEAD za pomocą edytora, umieszczając wartość ref: lub skrót hash). Lub utwórz brakujący oddział dipole_fix lokalny. (możesz wyświetlić właśnie wspomniany plik, aby zobaczyć, gdzie wskazuje ...)

Łącza wiszące: napraw je lub usuń.

1

Sprawdź aktualną gałąź przez:

git branch 

Jeśli nie pokazują żadnych oddział jako obecnego oddziału następnie spróbuj:

git reset --hard <some branch> 
Powiązane problemy