2013-07-18 9 views
6

popełniłem błąd, a następnie mój Windows (.. :() rozbił się i przedstawił mi piękny i niesławny niebieski ekran śmierci. Ponownie uruchomiłem komputer i wróciłem do pracy, tylko dowiedzieć się, że coś jest poważnie nie tak z moim lokalnym repo gitŚmierć: nie jest repozytorium git - po BSoD

„krytyczny: nie repozytorium git.”.

... dobrze, że eskalacji szybko

Czytałem się w tej kwestii (również tutaj na StackOverflow), ale jeszcze nie znalazłem rozwiązania, które zawierałem:

  • git init (mówi ciągu 0.1s: reinicjalizowana istniejących repozytorium git)
  • stan git (daje ten sam błąd krytyczny) opracowuje
  • git pochodzenie Push (sam błąd krytyczny)

The. Folder git nadal tam jest i wygląda normalnie (chociaż nie zauważyłbym żadnych anomalii).

Wygląda na to, że nic nie mogę zrobić w linii poleceń, aby przywrócić moje repozytorium.

Znalazłem this reference, ale nie mam pojęcia, jak "zmienić HEAD na poprawny ref/hash".

Czy jest ktoś, kto wie, dokąd się udać?

(Wiem, że to pytanie pojawia się wiele razy na SO, ale żaden z tych problemów nie ma tego samego pochodzenia, a ich rozwiązania nie działają. Upewnij się, że to pytanie jest duplikatem, jeśli oznaczysz je jako takie.)

+3

Jeśli popełniane przez ciebie rzeczy nie są zbyt skomplikowane, może mógłbyś po prostu utworzyć nowy klon w repozytorium pochodzenia, przenieść swoje lokalne zmiany do tego repo i kontynuować pracę? –

+0

To z pewnością jest opcją, chociaż jestem bardzo ciekawy, jak to naprawić "we właściwy sposób". :) – Sherlock

+3

możesz usunąć folder .git, jeśli masz gdzieś klon (np. Na github), a następnie ponownie zainicjować folder lokalny i pobrać z drugiego repozytorium. –

Odpowiedz

3

(Jestem Pytający.)

Niestety nie miałem czasu, aby rozwiązać ten problem w czasie. Presja w tym projekcie trwa i musiałem kontynuować. Postanowiłem zrobić kompletny nowy checkout. Wszystko znów działa dobrze.

Lekcja: nigdy nie otrzymuj BSoD podczas zatwierdzania.

+1

Czy lekcja nie powinna być "częstszym robieniem kopii zapasowych"? – CharlesB

+1

Być może mógłbyś również napisać coś w stylu "ref: refs/heads/master" do ".git/HEAD', aby uczynić go wykrywalnym ponownie jako repozytorium Git. W moim systemie mogę utworzyć repozytorium Git ręcznie, po prostu tworząc 2 puste katalogi ("obiekty" i "refs") i jeden mały plik HEAD z zawartością 'ref: refs/heads/something'. –

+0

@CharlesB Nie, nic nie straciłem. Pchnąłem też kilka minut wcześniej. – Sherlock

Powiązane problemy