Korzystając z Gita w wersji 2.2.0 z silnikiem gry Unity na OS X, chciałem zatwierdzić mój kod. Dodałem wszystko i nie dostałem komunikatu o błędzie. następnie zatwierdź -m i otrzymałem następujący komunikat o błędzie:
fatal: multiple stage entries for merged file 'Assets/Prefabs/Resources'
Nie zauważając tego, nacisnąłem, który nie dał komunikatu o błędzie, w rzeczywistości powiedziałem, Everything up-to-date
więc sprawdziłem bitbucket (gdzie odbywa się repo) i nie pokazałem mojego zatwierdzenia. więc sprawdziłem mój lokalny dziennik i to również nie pokazuje mojego zatwierdzenia.
Szukałem odpowiedzi w google ... i nic. co to za błąd? i jak mogę to naprawić?
Odpowiedzi:
Pierwszy obejście, które wydaje się działać z ostatnich wersji Git (2.3 lub nowszym, Q2 + 2015) jest wymieniony w grantu jest bardziej up-to-date odpowiedzi :
Usuń indeks
Dodać wszystko
Popełnić
Oryginalna odpowiedź (koniec 2014 r.)
Zwykłym obejściem jest:
dodaj zmiany z pierwszego repo do drugiego:
Możesz zobaczyć ten komunikat o błędzie
read-cache.c
, omówiony w tej łatce („read-cache.c
: Upewnij się, że nie zostały scalone wpisy usunięte ”) i wprowadzony w zatwierdzeniu Git 2.2 .Ponieważ jest to tak niedawne, możliwe jest, że obniżenie Gita do 2.1 wystarczyłoby, aby łatka nie miała na niego wpływu.
OP Daniel Toebe dodaje w komentarzach :
źródło
git commit -c sha
Wydaje mi się, że napotkałem ten problem, ponieważ dodałem i zatwierdziłem zmiany, a następnie usunąłem właśnie zatwierdzony plik. Jeśli brzmi to podobnie jak w Twoim przypadku, zalecamy wykonanie poniższych czynności, aby zapisać ponowne klonowanie i ręcznie dodać zmiany.
Byłem w stanie rozwiązać ten problem, usuwając plik .git / index z mojego repozytorium, podobnie jak sugerował @slider (myślę, że pomylił ścieżkę).
Następnie musiałem ponownie dodać i zatwierdzić moje lokalne zmiany
Byłem wtedy w stanie naciskać zdalnie.
Co to jest indeks git i jak jest istotny?
O co chodzi z indeksem Git?
Wierzę, że po usunięciu tego pliku git ponownie zindeksuje repozytorium, utworzy nowy i jesteś gotowy. Rozwiązuje ten problem, ponieważ lokalne repozytorium jest ponownie indeksowane bez pliku, który usunąłem, co spowodowało całe zamieszanie.
Edycja: Wygląda na to, że jest to związane z komputerem Mac (na podstawie komentarzy), więc jeśli to pomaga, korzystam z OSX 10.10 i git w wersji 2.3.4 zainstalowanej przez brew.
źródło
git add -A
git
. (Właściwie wydaje mi się, że jest ich wiele.) Zamykanie IntelliJ, usuwanie indeksu i ponowne uruchamianie mojej pracy działało dobrze.Dla projektu
po usunięciu indeksu należy go ponownie utworzyć, wykonując polecenie git reset
Dla submodułu:
Przejdź do głównego folderu projektu
źródło
Możesz usunąć plik indeksu Git ze swojego projektu. W katalogu głównym projektu uruchom następujące polecenie:
Po tym git działa.
źródło
rm: /.git/index: No such file or directory
Mac OSX Yosemite; git 2.3.4 zainstalowany przez homebrewrm .git/index
w twoim katalogu git).Próbuję innego rozwiązania i to działa dla mnie. Poniżej są moje opcje
źródło
git reset
przeciwnym raziefatal: Could not reset index file to revision 'HEAD'
.Jeśli tak się stanie w submodule
Plik indeksu znajduje się w
.git
katalogu nadrzędnym :W podmodule nie ma nazwanych katalogów
.git
(przynajmniej w projekcie, nad którym pracuję), jest tylko jeden.git
plik, który mówi ci (i git), gdzie szukać katalogu git tego projektu.Status Git pokazuje zmiany, których nie wprowadziłem
Po usunięciu plików indeksu i wykonaniu a
git reset
, znalazłem się w obliczu wielu niewytłumaczalnych zmian i twardy reset nie pomógł.Ostrzeżenie , że stracisz wszystkie zmiany, więc zatwierdź je i pchnij, zanim przejdziesz dalej.
Indeks wydawał się uszkodzony, więc usunąłem go za pomocą następujących poleceń.
źródło
Właśnie dostałem ten błąd w Github Desktop Client (OSX). Wszystko, co zrobiłem, to zamknąłem aplikację i otworzyłem ją ponownie, a potem zaczęła działać.
źródło