Widziałem wiele innych wątków na ten temat i one nie pomagają.
Mam bardzo proste repozytorium - dwa pliki JavaScript. Mam ponad 100 GB na Macbooku. Kiedy próbuję przenieść pliki do podkatalogu i lokalnie przygotować zmiany, które otrzymuję ...
krytyczny: nie można zapisać nowego pliku indeksu
Dzieje się tak, niezależnie od tego, czy wykonuję wszystkie czynności w terminalu, czy używam GUI, takiego jak SourceTree. Ponadto jeden z plików zostaje zablokowany i nie mogę usunąć katalogu roboczego, dopóki się nie wyloguję i nie zaloguję.
Dlaczego to się dzieje? Czy blokada zapobiega przemieszczaniu się czegoś? Jeśli tak, co / jak mogę odblokować plik powodujący problem w systemie OS X? Zdalne repozytorium to Google Code, jeśli to robi różnicę, chociaż jeszcze nie pcham na pilota. Wszystko jest lokalne.
./git
folderem.Odpowiedzi:
W moim przypadku na dysku zabrakło miejsca, więc musiałem usunąć pliki z dysku twardego, aby zrobić miejsce.
źródło
Od kilku dni mam ten sam problem. Zasadniczo bez mojej wiedzy całe repozytorium zostało przeniesione do nowego systemu plików, kiedy próbowałem uruchomić status git, nagle zgłaszał, że każdy plik w repozytorium został zaktualizowany.
Możliwe rozwiązania
Tak więc po wielu przeszukiwaniu google próbowałem następujących rzeczy:
tl: dr - brudne rozwiązanie
Jedyne, co udało się rozwiązać, to skopiowanie pliku indeksu, usunięcie oryginału i zmiana nazwy kopii.
Wiem, że to naprawdę nie jest „rozwiązanie”, ale teraz działa magicznie> <, z nienaruszonymi wszystkimi plikami / gałęziami. Jeśli ktoś wie, dlaczego to może zadziałać, powiedz.
źródło
W moim przypadku wstrzymanie synchronizacji skrzynki referencyjnej rozwiązało problem
źródło
Miałem ten sam problem na komputerze Mac. Wydaje się, że jest to spowodowane listami ACL systemu plików. Spróbuj
chmod -RN /path/to/repo
wyczyścić listy ACL. Po wykonaniu tej czynności byłem w stanie wprowadzić zmiany. Używając sztuczki, aby skopiować plik indeksu, usuń oryginał i przenieś kopię z powrotem, osiągając ten sam rezultat.źródło
Jeśli masz konfigurację github w jakiejś usłudze synchronizacji online, takiej jak dysk Google lub Dropbox, spróbuj wyłączyć synchronizację, ponieważ usługa synchronizacji próbuje odczytać / zapisać w pliku, ponieważ github próbuje zrobić to samo, co prowadzi do tego, że github nie działa prawidłowo.
źródło
Zdarzyło mi się, że plik .git / index był używany przez inny proces (mój lokalny serwer WWW). Zakończyłem proces i zadziałało.
źródło
Zamknięcie programu Visual Studio Code (który w moim przypadku ma w tle zadanie automatycznego przesyłania działające przy zapisywaniu pliku) rozwiązało problem.
Kredyt za rozwiązanie: mój przyjaciel i kolega Arnel.
źródło
To zadziałało dla mnie:
źródło
W moim przypadku rozwiązaniem było tylko dodanie uprawnień nowemu użytkownikowi.
Kiedy zainstalowałem nowy system operacyjny, przeniosłem moje repozytoria i pokazywał dokładnie ten błąd Wybrałem folder główny, a następnie dodałem uwierzytelnionego użytkownika, aby sprawdzić wszystko
źródło
Miałem ACL (w jakiś sposób) dołączoną do wszystkich plików w folderze .git.
Sprawdź to
ls -le
w folderze .git.Listę ACL można usunąć za pomocą
chmod -N
(dla folderu / pliku) lubchmod -RN
(cyklicznie)źródło
Myślę, że niektóre rozwiązania do tworzenia kopii zapasowych w tle, takie jak Kopia zapasowa i synchronizacja Google, blokują dostęp do pliku indeksu. Zamknąłem aplikację i Sourcetree nie miało żadnych problemów. Wygląda na to, że Dropbox robi to samo (@tonymayoral).
źródło
W moim przypadku był to jednocześnie działający EGit. Po ponownym uruchomieniu eclipse działa jak zwykle.
źródło
Jeśli korzystasz z komputera z systemem Windows, upewnij się, że program, którego używasz, niezależnie od tego, czy jest to drzewo źródłowe, czy terminal git, działa jako administrator. Otrzymałem dokładnie ten sam komunikat o błędzie. Możesz kliknąć program prawym przyciskiem myszy, aby uruchomić go jako administrator, lub zmienić jego właściwości, aby zawsze działał jako administrator.
źródło
Brak wystarczającej ilości miejsca jest problemem. Oczyść i spróbuj ponownie
źródło
Miałem ten sam problem. Uruchomiłem ponownie komputer i problem został rozwiązany.
źródło
czy próbowałeś „git add”. . czy to wszystkie zmiany? (możesz usunąć niepotrzebne dodane pliki przez git reset HEAD)
źródło
Komunikat o błędzie
fatal: Unable to write new index file
oznacza, że nie mogliśmy zapisać nowej treści do pliku indeksu git.git\index
(zobacz tutaj, aby uzyskać więcej informacji o indeksie git). Po przejrzeniu wszystkich odpowiedzi na to pytanie podsumowuję następujące przyczyny:.git\index
są zablokowani przez innych użytkowników lub procesy. ( Rozwiązanie : odblokuj plik)Łącze Dowiedz się, który proces blokuje plik lub folder w systemie Windows, określa następujące podejście, aby dowiedzieć się, jaki proces blokuje określony plik:
Użyj powyższego podejścia, aby znaleźć zablokowany proces,
.git\index
a następnie zatrzymaj plik wykonywalny blokujący. To się odblokuje.git\index
.Na przykład Wyszukiwanie w Process Explorer pokazuje, że
.git\index
jest zablokowane przezvmware-vmx.exe
. Zawieszenie maszyny wirtualnej VMWare Player (która uzyskiwała dostęp do repozytorium git przez udostępniony folder) rozwiązało problem.źródło
JEŚLI OTRZYMASZ TO PODCZAS ODBUDOWY:
Najprawdopodobniej jest to spowodowane przez oprogramowanie blokujące plik indeksu repozytorium, takie jak oprogramowanie do tworzenia kopii zapasowych, antywirusy, IDE lub inni klienci git.
W większości przypadków blokada jest tylko na krótką chwilę, więc dzieje się tak z powodu złego czasu i pecha.
Jednak
git rebase --continue
będzie narzekać, że następne polecenie jest pustym zatwierdzeniem:Aby to naprawić, po prostu uruchom
git reset
i spróbujgit rebase --continue
ponownie.źródło
Problem: podczas sprawdzania niektórych zmodyfikowanych plików w git otrzymałem ten błąd. Miałem dwóch użytkowników ABC i XYZ. pliki mają uid: gid ABC, ale nie mają dostępu git i próbują wyewidencjonować pliki tym samym.
Rozwiązanie, które wypróbowałem: XYZ ma dostęp git, próbował sprawdzić pliki za pomocą sudo i zadziałało .. !!
źródło
Oto, co zadziałało dla mnie:
Kontekst:
Budowanie projektu na serwerze
git status
zwraca aHEAD detached at <commit-SHA>
Cokolwiek wykonałem lokalnie, miałem ten błąd. Dokładniej:
Rozwiązanie
<work-dir>/.git/index
.git status
oznaczałoby, że wszystkie pliki w projekcie nie są śledzone (nic dziwnego).git reset HEAD --hard
HEAD detached at <commit-SHA>
robieniagit status
, ale wtedy powinieneś być w staniegit checkout <some-branch>
i wracasz na właściwe tory!
!! WAŻNE !!
Działa to tylko dlatego, że buduję „merly”. W kodzie nie dokonano żadnych cennych modyfikacji. Jeśli faktycznie znajdujesz się w „czasie tworzenia”, radziłbym najpierw zapisać swoją pracę lub wybrać inną metodę.
Mam nadzieję, że to pomoże :).
źródło
Miałem ten problem podczas korzystania z GitExtensions w systemie Windows. Naprawiono przez udzielenie pełnych uprawnień aktualnemu użytkownikowi (mnie) do folderu zawierającego repozytorium.
Innym razem, mimo że otrzymywałem błąd z Git Extensions, udało mi się zatwierdzić te same pliki z Visual Studio 2015.
Innym razem musiałem usunąć plik „index” z folderu .git
źródło
Mój przypadek jest trochę interesujący:
Uruchamiam dziennik git, aby sprawdzić określone zatwierdzenie, ale nie wyszedłem z niego poprawnie, wciskam ctrl + c, aby go zamknąć.
Wtedy wydaje się, że indeks został zablokowany. Więc ponownie uruchamiam git log, a następnie naciskam Q, aby go zamknąć.
Problem rozwiązany. :)
źródło
W moim przypadku była to
nodemon
instancja obserwująca zmiany w systemie plików.źródło