Tak, wypróbowałem to przed wysłaniem. Problem dotyczył moich podmodułów, które ciągle uszkadzały mój plik indeksu (nie wiem dlaczego).
karellm Kwietnia
@karellm Czy dowiedziałeś się, dlaczego tak się dzieje?
crmpicco
Nie, szczerze mówiąc, nie zbadałem, co to spowodowało, i to też przestało się dziać.
karellm
Wskazówka: z mojego doświadczenia wynika, że może to być spowodowane brakiem aktualizacji folderu NFS. Jeśli Twoje repozytorium działa w systemie plików NFS, poczekaj kilka minut, zanim spróbujesz rozwiązać problem. Miałem to po ściągnięciu z jednej maszyny, a następnie sprawdzeniu statusu na innej, obie maszyny montowały ten sam NFS.
ggll
Odpowiedzi:
107
Plik indeksu został uszkodzony, ale można go łatwo odtworzyć. Po prostu go usuń ...
rm .git/index
Następnie możesz ponownie dodać pliki, które próbujesz przygotować.
Jak wspomniano powyżej, nie działał z powodu konfliktu z modułem podrzędnym, który raz po raz uszkadzał mój indeks ... Usunąłem moduł podrzędny, usunąłem indeks i dodałem wszystko. W końcu zadziałało. Dzięki!
karellm Kwietnia
3
Dlaczego to się dzieje? W ciągu ostatnich dwóch tygodni zdarzyło mi się to dwukrotnie i nie widzę powodu.
crmpicco
7
To nie zadziałało dla mnie. Przed tym błędem miałem w większości czystą kopię roboczą. Po usunięciu pliku indeksu i uruchomieniu git add .zachowywał się tak, jakby każdy plik był nowy i wymagał zatwierdzenia.
Mark
1
Nie działa też, gdy ma się podmoduł. Po prostu zresetuj (poniżej odpowiedź).
TimZaman
Jeśli git restore --stagedokaże się, że po uruchomieniu tego musiałem zrobić i rozwiązało to problem z myśleniem gita, że wszystko trzeba ponownie
zainstalować
90
Jeśli chcesz zachować lokalne zmiany, użyj:
$ rm .git/index
$ git reset HEAD .
> Unstaged changes after reset:
modified foo.txt
modified bar.txt
Masz jakiś pomysł, dlaczego tak się dzieje? Zdarzyło mi się to około 4-5 razy w ciągu ostatnich dwóch tygodni.
crmpicco,
1
Ta odpowiedź jest tutaj najlepsza. Dodatkowo, uwaga, jeśli używasz podmodułów git: Usuń również te pliki indeksu (znajdują się w .git/modules/src). To sprawiło, że zacząłem się zastanawiać, dlaczego błąd nadal występuje po usunięciu (głównego) pliku indeksu.
Graftak
Wydaje mi się, że może się to zdarzyć ze standardowych powodów, proces umarł w połowie drogi, zabrakło miejsca na dysku itp. Chociaż w moim przypadku może być tak, że używam dowiązania symbolicznego do folderu git, aby utworzyć katalogi do wykorzystania do budowania zamiast zewnętrznych elementów svn , choć jest to dziwne, ponieważ jedyną operacją na tych repozytoriach jest tylko do odczytu, aby twardy reset folderów kompilacji.
jgmjgm
2
Tym, którzy mają problemy nawet po usunięciu indeksu i nie mogą zrobić resetu. Jeśli chcesz zachować zmiany, wykonaj następujące czynności (nie jest to rozwiązanie, ale raczej brzydkie obejście!).
Zrób kopię zapasową swoich plików. To, co powiem, powinno działać, ale zrób to na wszelki wypadek.
Usuń folder .git
Sklonuj swoje repozytorium (nie ma znaczenia gdzie) Zrobiłem to w bieżącym katalogu
Skopiuj plik utworzony z katalogu clone .git do bieżącego katalogu
Usuń sklonowany katalog
6. Opcjonalnie, jeśli ponownie użyłeś do niego pobierania gałęzi
Status Gita powinien teraz śledzić zmiany tak, jak powinien, a wszystkie twoje polecenia git powinny działać
Mój przypadek był taki, jak opisano powyżej, git pomieszał swoje odniesienia ... Git logpokazywał "Twoja gałąź wydaje się być zepsuta" i git fsckostrzegał mnie o błędnych referencjach. Pomyślałem, że prawdopodobnie mogę to naprawić, ale spędziłbym dużo czasu, robiąc to, więc poszedłem na brzydkie obejście.
Odpowiedzi:
Plik indeksu został uszkodzony, ale można go łatwo odtworzyć. Po prostu go usuń ...
Następnie możesz ponownie dodać pliki, które próbujesz przygotować.
źródło
git add .
zachowywał się tak, jakby każdy plik był nowy i wymagał zatwierdzenia.git restore --staged
okaże się, że po uruchomieniu tego musiałem zrobić i rozwiązało to problem z myśleniem gita, że wszystko trzeba ponownieJeśli chcesz zachować lokalne zmiany, użyj:
źródło
.git/modules/src
). To sprawiło, że zacząłem się zastanawiać, dlaczego błąd nadal występuje po usunięciu (głównego) pliku indeksu.Tym, którzy mają problemy nawet po usunięciu indeksu i nie mogą zrobić resetu. Jeśli chcesz zachować zmiany, wykonaj następujące czynności (nie jest to rozwiązanie, ale raczej brzydkie obejście!).
Mój przypadek był taki, jak opisano powyżej, git pomieszał swoje odniesienia ...
Git log
pokazywał "Twoja gałąź wydaje się być zepsuta" igit fsck
ostrzegał mnie o błędnych referencjach. Pomyślałem, że prawdopodobnie mogę to naprawić, ale spędziłbym dużo czasu, robiąc to, więc poszedłem na brzydkie obejście.źródło