Kiedy wykonuję polecenie „git commit”, otrzymuję następujące informacje:
fatal: Unable to create 'project_path/.git/index.lock': File exists.
Jednak kiedy to robię, oznacza ls project_path/.git/index.lock
to, że plik nie istnieje. Wszelkie przemyślenia na temat tego, co powinienem zrobić? Zauważyłem również, że project_path / .git jest własnością root, nie jestem pewien, czy ma to coś wspólnego z problemem, z którym się spotykam.
wersja git to 1.7.5.4
edycja: Wygląda na to, że problemem najprawdopodobniej był inny proces, który miałem uruchomiony, czyli pisanie (bez wiedzy) do katalogu projektu. Uruchomiłem ponownie komputer, a następnie nie miałem problemu z zatwierdzeniem.
Odpowiedzi:
To może być stara odpowiedź, ale mam nadzieję, że będzie to przydatne w przypadku osób, które potrzebują tego rozwiązania.
W systemie linux / unix / gitbash / cygwin spróbuj
rm -f .git/index.lock
W wierszu polecenia systemu Windows spróbuj:
del .git\index.lock
źródło
fatal: Unable to create 'project_path/.git/index.lock': File exists.
, który mówi „Plik istnieje”, a usunięcie go byłoby prostym rozwiązaniem. Dlaczego miałbym sugerować usunięcie pliku, jeśli nie ma go nawet w pierwotnym pytaniu?Dla Windowsa:
źródło
Na platformie Windows z uruchomionym programem Visual Studio 2015 RC (v4.6.00057) w połączeniu z SourceTree (v1.6.14.0) również ten błąd.
Rozwiązanie: Zakładając, że chcesz używać drzewa źródeł jako menedżera kodu źródłowego, po prostu wyłącz dostawcę kontroli źródła w programie Visual Studio w następujący sposób:
źródło
źródło
próbować
jeśli nie masz uruchomionego innego procesu git, po prostu usuń plik index.lock odpowiedniego projektu.
źródło
Właśnie miałem ten problem ... Gitbox był winny. Więc może miałeś uruchomione GUI, które powodowało problemy.
źródło
Dzieje się tak, gdy anulujesz ciągnięcie od początku w środku.
więc możesz ręcznie usunąć plik index.lock z katalogu .git.
cd do katalogu projektu i uruchom to polecenie.
źródło
(Jeśli plik zostanie utworzony, po prostu z płyty CD do tej lokalizacji, problem leży w twoim edytorze. Zamknij edytor. Nie używaj tego edytora ponownie do tego zadania. Otwórz inny rodzaj edytora - Windows Power Shell lub po prostu cmd. Teraz możesz użyć poleceń git, aby kontynuować)
źródło
Prawdopodobnie (tak się stało) polecenie ls mówi, że nie istnieje, ponieważ bieżący użytkownik nie ma uprawnień dostępu do tego katalogu lub pliku.
Usuń blokadę i upewnij się, że wykonujesz git z odpowiednim użytkownikiem , aby uniknąć problemów z uprawnieniami.
Jeśli jesteś w polu GNU / Linux z poleceniem sudo :
źródło
ls project_path/.git/index.lock
.del .git\index.lock
pracował dla mnie.Napotkałem ten problem podczas finalizowania transakcji w nowym oddziale oddziału master.
Do kasy łatwo zdarzyło się po usunięciu
index.lock
pliku.źródło
Czasami Git tworzy plik blokady związany z repozytorium podczas wprowadzania zmian lub najprawdopodobniej podczas korzystania z podmodułów. Komunikat o błędzie pokaże ścieżkę do pliku blokady. Poprawka: wystarczy ręcznie przejść do ścieżki w terminalu i usunąć plik blokady za pomocą $ rm index.lock
To powinno pomóc.
źródło
Miałem ten problem z SourceTree podczas przełączania gałęzi poprzez dwukrotne kliknięcie. Problem nie jest zbyt powszechny i Atlassian o tym wie, ale postanowili go nie naprawiać.
Na szczęście istnieje rozwiązanie. Zamiast podwójnego kliknięcia na gałąź, którą chcesz przełączyć, wystarczy kliknąć prawym przyciskiem myszy i wybrać „Do kasy [nazwa gałęzi]”. To powinno się teraz powieść.
źródło
Natknąłem się na ten sam scenariusz. Nawet nie wprowadziłem żadnych zmian w moim lokalnym kodzie. Właśnie edytowałem plik i przywracam go. Właśnie usunąłem poniższy plik z ukrytego folderu .git. Zadziałało!
źródło
O ile nie zamierzałeś, aby root był właścicielem repozytorium, brzmi to tak, jakbyś przypadkowo uruchomił komendę Git jako root (może nawet początkowy klon / init). Jeśli chcesz to zrobić, będziesz musiał żyć z uruchomieniem wszystkich poleceń Git w repozytorium jako root. Jeśli nie, biegnij,
sudo chown your-user[:your-group] -R .git
aby przejąć na własność, a następnie sprawdź, czy wszystko działa.źródło
.git
i poprawiłem je:find .git -type f -exec chmod 644 {} \;
a takżefind .git -type d -exec chmod 755 {} \;
zepsułem tryby, przenosząc mój projekt git z jednego komputera na drugisudo chmod g+w .git -R
Wielu klientów git pracujących w tym samym lokalnym repozytorium konkuruje o tę blokadę. Każdy klient powinien poczekać, aż druga strona zwolni zamek, aby być dobrym obywatelem. Wydaje nam się, że SourceTree lub MSVS wykonują pewne czynności konserwacyjne w tle, gdy działaliśmy z dużymi skryptami zatwierdzającymi.
Być może sam „git” powinien obsługiwać argument „--retriesWhenLocked 5” w celu obsługi ponownych prób. lub nawet domyślnie, gdy jest uruchamiany ręcznie.
Oto opakowanie programu PowerShell wokół gita o nazwie „gitr”, które ponawia próbę aż do zniknięcia pliku index.lock, przy użyciu domyślnych 5 prób, po 3 sekundy między nimi. Nigdy nie usuwa index.lock, zakładając, że użytkownik powinien interweniować. Został wyodrębniony z większego skryptu zatwierdzenia. Ma tylko minimalne testy z prostymi argumentami.
gitr.ps1
źródło
Mam również to pytanie w systemie Windows 10.
kiedy próbuję del
./.git/index.lock
, powiedział micannot remove 'index.lock': Device or resource busy
W końcu zrozumiałem powód:
komputer ma dwa procesy korzystania z git:
więc używam cmder.exe, aby
git commit
wystąpiły błędy.więc rozwiązaniem jest użycie
git bash
lub Zakończ, agit bash
następnie użyj cmder.exeźródło
Miałem ten sam błąd, ale problemem nie był plik blokady. Zamiast tego problem polegał na tym, że skopiowałem zawartość innego repozytorium git do tego repozytorium, w tym folder niewidoczny .git. Tak więc SourceTree był zdezorientowany, do którego repozytorium chciałem wystawić pliki (istnieje rozbieżność między repozytorium, które SourceTree myślało, że w nim jestem, a tym, w którym zawartość mojego osadzonego pliku .git dir powiedziała, że powinienem być).
źródło
Miałem ten problem z TortoiseGit z Cygwin na Windows. Nie udało mi się usunąć.
Odkryłem, że mam uruchomione 2 instancje TortoiseProc.exe. Zabiłem jednego z nich i zamknąłem wszystkie okna Eksploratora Windows, a następnie mogłem usunąć plik. Nie wiem, czy zabicie wystąpienia TortoiseProc.exe było rozwiązaniem, czy zamknięcie okna eksploratora Windows.
źródło
Rozwiązaniem było dla mnie usunięcie pliku .index i umożliwienie Gitowi przebudowania innego.
źródło
Nie miałem pliku inex.lock do usunięcia, ale dla mnie zadziałało usunięcie zaznaczenia Tylko do odczytu z okna Atrybuty okna dialogowego Właściwości folderu.
źródło
Utworzyłem pusty plik index.lock, usunąłem go za pomocą polecenia systemu Windows
źródło
Począwszy od gita 2.8.4 (czerwiec 2016 r.) , Nie powinno to już mieć miejsca.
Zobacz problem 755, który powinien również złagodzić problem ( zatwierdzenie 2db0641 ):
źródło
W mojej aplikacji sourceTree nie jestem w stanie dokonać zatwierdzenia ani przejść do żadnego innego zatwierdzenia / bracha. Ten czas pokazuje błąd jak
fatal: Nie można stworzyć bla bla bla ..
Rozwiązuję to po prostu za pomocą folderu goto .git (w projekcie Explorer Dir). I usuń indeks ----- [typ pliku: plik LOCK]. Teraz odzyskam cały dostęp do źródła w drzewie źródłowym ..
upewnij się, że plik blokady indeksu .. załóżmy, że nie masz typu pliku, zmień ustawienia podglądu plików na komputerze. Uwaga: folder .git jest zwykle ukrytym typem folderu.
źródło
To, co dla mnie zrobiło, to:
git rebase --abort
i uruchom ponownie bazę.Jak wspomniał Andrew, kiedy to się stało, korzystałem również z PHPStorm. Nie musiałem go jednak zamykać.
źródło
Najpierw musisz przejść do określonego folderu projektu. Na przykład, jeśli nazwa projektu to Firstproject, najpierw przejdź do katalogu projektu .. następnie wpisz cd .git, a następnie po przejściu do folderu git wpisz del index.lock Po usunięcie pliku index.lock..Będziesz mógł zatwierdzić i wcisnąć jak poprzednio
źródło
W moim przypadku były to okna, które nie zostały całkowicie zamknięte.
Windows jest hibernowany, odmówiono zamontowania
Są szanse, że Windows naprawdę jest w stanie hibernacji. System Windows robi to automatycznie, gdy nakazuje się normalne zamknięcie. Korzyścią jest szybszy pozorny czas uruchamiania.
Aby zamknąć system Windows bez hibernacji, wydaj następujące polecenie w wierszu polecenia (w systemie Windows):
Możesz także chcieć dołączyć
/t 0
do natychmiastowego zamknięcia.Znalazłem fajny samouczek, aby skonfigurować program uruchamiający w tym celu: Jak wykonać pełne wyłączenie systemu Windows 8 bez wyłączania rozruchu hybrydowego.
Prostszym podejściem do faktycznego zamykania systemu Windows jest „ponowne uruchomienie” (zamiast „zamknięcie”), ale następnie przechwycenie procesu rozruchu i uruchomienie systemu Linux zamiast pozwalania mu na uruchomienie systemu Windows.
kredyt : nobar
źródło
Może się to również zdarzyć, jeśli używasz alternatywnego klienta git z wiersza poleceń, takiego jak hub .
Używam hub jako aliasu zamiennika git od kilku lat, ale ostatnio napisałem skrypt bash, który robi w nim sporo git, i zacząłem mieć problem z blokowaniem indeksu.
Nie mogłem znaleźć poprawki, dopóki nie przypomniałem sobie, że działałem hub zamiast git. Usunąłem to i problem zniknął!
źródło
Otrzymywanie błędu:
Ale nie mogłem znaleźć (ani usunąć) tego pliku .git / index.lock.
W moim przypadku git-cola działała!
To oczywiście tworzy ten .git / index.lock co jakiś czas lub spowodowany przez rebase, który robiłem w linii poleceń i podczas którego otrzymałem ten błąd - więc git-cola oczywiście „zakłóca” działanie Git w linii poleceń (lub niektóre operacje Git CLI).
Rozwiązuje się to poprzez zamknięcie git-coli podczas git rebase z linii poleceń.
źródło
Czasami inny klient Git może zakłócać działanie wielu zainstalowanych.
To znaczy. upewnij się, że w Menedżerze zadań lub
Get-Process
żeTGitCache
TortoiseGit nie jest aktywny w tle.źródło
Ostatnio miałem ten sam problem. Jeśli sprawdzisz cały komunikat o błędzie, oznacza to również, że istnieje proces korzystający z procesu git, który blokuje usunięcie pliku index.lock. Być może masz otwarte IDE, takie jak Visual Studio lub powiązane oprogramowanie, z którym git jest zintegrowany. Zamknij i spróbuj ponownie schować plik. Mam nadzieję, że to pomoże.
źródło