Git - fatal: Nie można utworzyć „/path/my_project/.git/index.lock”: plik istnieje

803

Nadal pojawia się ten komunikat o błędzie, gdy próbuję przenieść drzewo projektu na git repo.

Sprawdziłem uprawnienia do mojego katalogu w tym projekcie i są one ustawione na 777. W terminalu w katalogu z my_projectustawiłem:

git init

a potem jeśli spróbuję

git add.

lub

git commit -m „pierwsze przesłanie”

więc dostanę błąd

fatal: Unable to create '/path/my_proj/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

Próbowałem również utworzyć nowe repozytorium i tam je zatwierdzić, ale niestety nadal ten sam komunikat o błędzie.

Co jest przyczyną problemu?

użytkownik984621
źródło
1
Miałem ten problem, ponieważ zalogowałem się za pomocą su w innym terminalu, przełączając się z powrotem do pierwszego, wszystko poszło dobrze
maazza
3
bro, miałem ten sam problem, użyj „sudo git add. lub git commit -m„ first upload ”” zamiast „git add. or git commit -m„ first upload ””
mehdi zahrane
Mam to ustalone przez zmianę uprawnień do pliku .git za stackoverflow.com/questions/14127255/... , patrz odpowiedź z Mahshid Zeinaly
vikramvi

Odpowiedzi:

1736

Próbować

rm -f ./.git/index.lock

W twoim katalogu repozytorium. Komunikat o błędzie jest dość wyraźny co do tego, co go zwykle powoduje, więc jeśli nie masz uruchomionych innych procesów git (co jest normalnym przypadkiem), śmiało i usuń ten plik.

Raphael R.
źródło
7
To nie dzieje się automatycznie. Musisz wykonać polecenie, git pushaby wprowadzić zmiany na serwer WWW. Szczegółowe informacje na temat tego, jak to działa, znajdują się tutaj: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.
9
Mam dokładnie ten sam problem, ale nie mogę go rozwiązać w ten sposób, ponieważ plik .git / index.lock nie istnieje: touch .get/index.lockzwracatouch: .get/index.lock: No such file or directory
emersonthis 30.01.2013
24
Emerson, chyba szukasz .get zamiast .git, który nie istniałby.
Apie,
3
Odmowa uprawnień oznacza, że ​​musisz dać użytkownikowi, którego używasz Git, uprawnienia do odczytu / zapisu pliku. Sprawdź komendę chmod (w * nix lub Właściwości -> karta Zabezpieczenia w oknach)
Stijn de Witt
9
Jeśli błąd mówi „Odmowa zezwolenia”, prawdopodobnie skopiowałeś pliki z innego miejsca i nie masz uprawnień do katalogu .git. Użyj, ls -laby zobaczyć uprawnienia, a następnie użyj sudo chown -R username ./*i, sudo chgrp -R username ./*aby zmienić użytkownika i grupę na własne dla wszystkich plików w projekcie.
sprawdź
158

W systemie Windows wykonaj to w wierszu polecenia z katalogu repo:

cd .git
del index.lock

AKTUALIZACJA: Odkryłem, że nie muszę wykonywać tej procedury, jeśli poczekam chwilę po zamknięciu plików, nad którymi pracuję, zanim spróbuję zmienić gałęzie. Myślę, że czasami ten problem występuje z powodu nadrabiania zaległości przez wolny system plików. Inni, bardziej doświadczeni deweloperzy mogą włączyć się, jeśli uważają, że jest to poprawne.

ssaltman
źródło
3
O dziwo, pojawia się błąd związany z plikiem, ale potem, gdy próbuję usunąć plik w cmd.exe, mówi, że nie znaleziono pliku :) Ten sam wynik ze ścieżkami bezwzględnymi i względnymi. Ale w Git Bash działa (z rm -f index.lock)
Juha Untinen
W moim przypadku wykonałem „Fetch” po kilku ponownych uruchomieniach Sourcetree i pracowałem.
maxivis
32

Spróbuj wyjść z Xcode - ponieważ jest to klient git, musisz wyjść z Xcode, aby uniknąć problemów z git w wierszu poleceń.

Jeff Grimes
źródło
4
Miły! Pamiętaj, że Xcode ORAZ inni klienci Git mogą być sprawcami. W moim przypadku również zamknięcie gitX.
NSTJ
Po tym, jak musiałem usunąć plik blokady około 10 razy dziś rano, w końcu natknąłem się na tę odpowiedź. Nie wiem, jak otworzył się xcode, ale z pewnością zniszczył mój przepływ pracy. Dzięki za wskazówkę!
Cloudkiller
24

Miałem ten sam problem. próbowałem

rm -f ./.git/index.lock 

a konsola dała mi komunikat o błędzie. Potem spróbowałem

rm --force ./.git/index.lock

i to zadziałało.

Powodzenia! To działa super

Olivia Steger
źródło
Nie widzę folderu .git w moim przypadku. Widzę tylko ./ i ../ jeśli chodzi o ukryty katalog.
Na jakim komputerze jesteś?
Olivia Steger
18

W moim katalogu .git nie było pliku index.lock. Korzystając z powłoki Git Bash, uruchomiłem ...

cd .git
touch index.lock
rm index.lock

Polecenie dotykowe utworzyło plik i problem zniknął.

John Livermore
źródło
Dlaczego jest to zaniżone? Otrzymałem podobny komunikat o błędzie jak OP. To mnie naprawiło, a może może pomóc innym.
John Livermore,
1
Wystąpił niewielki wariant tego: (1) Wystąpił komunikat o błędzie i eksperymentowałem z różnymi „poprawkami”; (2) Stwierdziłem, że index.locknie istnieje; (3) Użyłem powyższego touchpolecenia; (4) mój klient git przestał działać normalnie (w najlepszym wypadku zwolnił do indeksowania); (5) usunąłem index.lock; (6) repozytorium zaczęło normalnie funkcjonować.
clarpaul
Zdecydowanie nie należy lekceważyć, rozwiązywał mój problem. Nie miałem pliku index.lock, ale kiedy go utworzyłem, a następnie usunąłem, zatwierdzenie działało.
Bynho
touch index.locksugeruje, że John był na * NIX, ale właśnie zrobiłem odpowiednik na Windows 10 (utwórz index.lockplik za pomocą edytora tekstu, usuń go natychmiast i zysk), a problem zniknął.
ruffin
1
@Spark zaktualizowany ...
John Livermore
13

Czy przypadkowo utworzyłeś repozytorium za pomocą rootużytkownika?

Zdarza się, że jako rootużytkownik utworzyłem repozytorium git .

Usunąłem repozytorium git i utworzyłem je ponownie bez sudoi działa.

hktang
źródło
1
Tak, to wszystko. Dzięki
Natassia Tavares
9

mam też ten problem i uważam, że to naprawdę problem z uprawnieniami. więc robię to:

sudo chown -R : .git #change group
sudo chmod -R 775 .git #change permission

wtedy wszystko jest wspaniałe, a gaa jest sukcesem.

a następnie używam gp, otrzymuję kolejny błąd prawie taki sam błąd

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem
bronić orca
źródło
genialne, co to robi? „$ {USER: - $ (id -un)}”
Nick
7

W Mac OS X zrób to w wierszu polecenia z katalogu repo:

cd .git
rm index.lock
Rick Wong
źródło
1
Brak takiego pliku lub katalogu
Channox,
5

Jeśli używasz jednego z #intelliJIDE i otrzymujesz tę wiadomość (używam #webtorm), zauważ, że ten problem może wystąpić z powodu ukrycia jednego z folderów projektu (ustawienia wewnętrzne), co może uniemożliwić GITscalenie.

neoswf
źródło
5

Rozwiązaniem, które działało dla mnie, było zamknięcie wysublimowanego tekstu, ponieważ uruchomiony proces git został zainicjowany przez redaktora.

snorkelzebra
źródło
Niedawno zainstalowałem wtyczkę Sublime Text GitSavvy i od tego czasu miałem ten błąd. Dzięki za podpowiedź, @snorkelzebra
Kitze
5

Jeśli po spróbowaniu:

rm -f ./.git/index.lock

dostajesz:

rm: nie można odłączyć „index.lock”: Odmowa uprawnień

Spróbuj zamknąć całe oprogramowanie, które może korzystać z Git. Miałem otwarte drzewo źródłowe i Visual Studio, a po zamknięciu oba polecenia działały.

Wygwizdanie
źródło
5

W systemie Windows udało mi się usunąć plik blokady po zakończeniu zadania dla wszystkich procesów Git Windows (32-bitowych) w Menedżerze zadań.

Rozwiązanie (Win 10)

1. Zakończ zadanie dla wszystkich procesów Git Windows (32-bitowych) w Menedżerze zadań

2. Usuń plik .git / index.lock

ChrisDeDavidMindflowAU
źródło
4

W moim przypadku rozwiązaniem było odczekać 5 minut. Oczywiście moja poprzednia operacja wciąż działała, ale po prostu jej nie znałem. Użyłem żółwia git na Windows.

rdans
źródło
4

Użyj tego:

rm -Force ./.git/index.lock
Manoj Tarkar
źródło
4

Myślę, że istnieje lepsze rozwiązanie niż usunięcie pliku (a Bóg wie, co będzie dalej podczas usuwania / tworzenia pliku za pomocą sudo):

git gc
Roy Segall
źródło
3

Masz problem, .git/index.lockwięc usuń go za pomocą poniższego polecenia.

Komenda:

sudo rm -rf .git / index.lock

Pramod Kharade
źródło
3

Kilka razy próbowałem wielu metod, ale ta zadziałała dla mnie (użyłem terminala PyCharm):

$ cd .git/

$ rm -f index.lock

Następnie spróbowałem ponownie utworzyć puste repozytorium git:

$ git init

$ git add .

$ git commit -m "commit msg"
rdza
źródło
3

Jeśli jest to podmoduł, spróbuj zamiast tego w katalogu repozytorium:

rm -f ../.git/modules/submodule-name/index.lock

zmień submodules-name na nazwę submodułu.

Kharda
źródło
2

Rozwiązaniem tego problemu jest skopiowanie trzech plików xcode / project do katalogu, a następnie utworzenie nowego katalogu (Whereever else), a następnie wklejenie trzech plików / katalogów.

G unitzo
źródło
2

Możemy też po prostu zabić proces git. Ten sam problem pojawia się za pośrednictwem aplikacji GUI dla git, coś idzie nie tak i git sprawia, że ​​niektóre działają nieskończenie. Proces zabijania zamrozi aplikację działającą z git, po prostu uruchom ją ponownie i wszystko będzie dobrze.

kaspartus
źródło
2

W przypadku, gdy z jakiegokolwiek powodu wykonujesz rebase z folderu, który jest synchronizowany przez usługę w chmurze (dropbox, dysk, onedrive itp.), Powinieneś zatrzymać lub wyłączyć synchronizację, ponieważ będzie to zakłócać uprawnienia w trakcie rebase .

Dmase05
źródło
2

Dla mnie tak było

rm -r .git-credentials.lock 
N Jay
źródło
2

Zmieniłem uprawnienia do katalogu, aby wiedzieć, że może to być związane z uprawnieniami. W moim przypadku usunąłem niechcianych (_www) użytkowników, a następnie zastosowałem zezwolenie na odczyt / zapis dla wszystkich, stosując zmienione dla całej zawartości. To jest na Macu

Licencja na katalog na Macu

Hammad Khan
źródło
2

Wszystkie polecenia usuwania nie działały dla mnie, to co zrobiłem, to nawigacja tam przy użyciu ścieżki podanej w git, a następnie ręczne usunięcie.

Aaron Rabinowitz
źródło
2

NIE UŻYWAJ do tego wtyczki Atom platformio-atom-ide-terminal . KORZYSTAJ Z TERMINALA SWOJEJ DISTRO BEZPOŚREDNIO.

Wciąż otrzymywałem ten błąd podczas zmiany / zgniatania zatwierdzeń i nie wiedziałem dlaczego, ponieważ robiłem to wcześniej kilka razy.

Nie ważne ile razy usunąłem index.lockplik, za każdym razem, gdy się nie powiedzie.

Okazało się, że to dlatego, że korzystałem z wtyczki terminalu ATOM EDITOR . Kiedyś użyłem terminala dostarczanego z Ubuntu, działało to jak urok.

juliangonzalez
źródło
2

po prostu przejdź do D: /project/androidgc/.git/ tego katalogu i usuń plik index.lock, który zadziałał dla mnie.

Avez Raj
źródło
1

W przypadku, gdy ktoś używa git svn, miałem ten sam problem, ale nie mogłem usunąć pliku, ponieważ go tam nie było! Po sprawdzeniu uprawnień, dotknięciu pliku i usunięciu go, i nie pamiętam, co jeszcze, to załatwiło sprawę:

  • sprawdź gałąź master.
  • git svn rebase (on master)
  • sprawdź gałąź, nad którą pracowałeś
  • git svn rebase
cauchy
źródło
1

Trochę dodając, ponieważ musiałem użyć różnych odpowiedzi, aby uzyskać rzeczywiste rozwiązanie (dla mnie).

Zrobiło to dla mnie:

  1. Otwórz oddział, nad którym pracujesz
  2. Otwarty terminal (używam terminala w Git GUI)
  3. Wpisz polecenie: cd .git
  4. Wpisz polecenie: rm -f index.lock

Niektóre mogą wymagać użycia -Forcezamiast -f. Można sprawdzić linii poleceń swojego terminala wydając polecenie w terminalu coś podobnego: git help.

Ronnie Oosting
źródło
0

Wszystkie rozwiązania są prawidłowe:

Just remove .git from your corrupted repository, 

then copy this file if back from another clone (if you don't have it in another machine, just clone it).

Wreszcie, co mnie zmieniło:

  • Unikaj używania sudo do rozpakowywania lub kopiowania nowego folderu .git. Git nie będzie miał dostępu do folderu .git, jeśli użyjesz do tego uprawnień administratora
Javi
źródło
0

Zdarzyło mi się to, gdy byłem w podkatalogu katalogu odpowiadającego folderowi głównemu repozytorium (tj. Katalogowi, w którym był .git). Przejście do katalogu głównego rozwiązało problem - kosztem uczynienia wszystkich odwołań do plików nieco bardziej niewygodnymi, ponieważ musisz przejść ścieżkę / do / folder / foo.ext zamiast tylko foo.ext

SN
źródło