Wydaje się, że w tym repozytorium działa inny proces git


667

Próbuję nauczyć się korzystać z Git i stworzyłem mały projekt z plikiem HTML, CSS i JavaScript. Zrobiłem gałąź z mojego zasadniczo pustego projektu, a następnie wprowadziłem kilka zmian w kodzie. Próbowałem wprowadzić zmiany, ale pojawia się następujący komunikat o błędzie:

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.

Owszem, miałem problemy z próbowaniem wcześniejszego zatwierdzenia mojego pustego projektu i po prostu rzuciłem git bash, ponieważ nie wiedziałem, jak wydostać się z miejsca, w którym się dostałem.

Czy jest jakiś sposób, aby to naprawić, czy powinienem po prostu założyć nowe repozytorium?


1
Wygląda na to, że zdecydowanie działa inny proces, prawdopodobnie w innej karcie terminala?
Vincent Rodomista

Otwórz menedżera zadań i zobacz, co jeszcze działa. Być może nie można również użyć Process Explorer, jeśli jest zainstalowany.
Tim Biegeleisen,

Spróbuj użyć git bash, wiersza poleceń lub GUI, a następnie możesz odblokować zablokowanego gita
SalindaKrish

Odpowiedzi:


1291

Spróbuj usunąć index.lockplik ze swojego .gitkatalogu.

rm -f .git/index.lock

Takie problemy zwykle występują, gdy wykonujesz dwa gitpolecenia jednocześnie; może jeden z wiersza poleceń i jeden z IDE.


7
Wystąpił następujący błąd: rm: nie można usunąć „.git / index.lock”: Urządzenie lub zasób zajęte
Yuvraj Patil

8
usuń za pomocąrm -f .git/index.lock
William Hampshire

W przypadku CocoaPods spróbuj usunąć Podfile.lock.
LinusGeffarth

1
Pracowałem też dla mnie, dzięki. Zastanawiam się, dlaczego ta odpowiedź nie jest jeszcze oznaczona jako zaakceptowana. Sekwencja poleceń: 1) znajdź | grep '\ .lock $' 2) rm -f ./.git/index.lock
Ankush

4
Jeśli nie ma index.locktam pliku, sprawdź, czy HEAD.lock· Usunięcie go rozwiązało problem.
Daniel Shatz,

64

Użyj poniższej komendy w katalogu głównym aplikacji. Spowoduje to usunięcie pliku index.lock i zwolnienie aktywnej blokady.

rm .git/index.lock

Musiałem także zamknąć Sublime-Text, ponieważ miał wtyczkę git. Inne IDE połączone z git ma prawdopodobnie ten sam problem
nick carraway

31

Usunięcie mojej wiadomości zatwierdzenia działało dla mnie.

rm .git/COMMIT_EDITMSG

Potem powiedział.

fatal: nie można zablokować ref 'HEAD': Nie można utworzyć '.git / refs / heads / [your-branch-name] .lock': plik istnieje.

Zauważ, że nazwa twojego oddziału może być inna niż moja. Możesz usunąć ten plik blokady, wykonując;

rm .git/refs/heads/[your-branch-name].lock

Mam nadzieję, że to komuś pomoże.


3
to mi pomogło, pozostałe odpowiedzi nic mi nie zrobiły.
CodyMace

1
Działa to, gdy próbowałem zatwierdzić kompozycję dokera-komponowania w tle.
John Spiteri,

15

Ok, skończyło się na tym, że uruchomiłem go, uruchamiając „$ git rm .git / index.lock” ... To dziwne, ponieważ robiłem to kilka razy wcześniej, ale bez skutku, ale hej komputery, prawda?


5
Nie ma potrzeby używania git rmtutaj, rmwystarczy. index.locknie jest plikiem przeznaczonym do śledzenia przez git.
Matthieu Moy,

8

Zdarzyło mi się to i chociaż sourcetree ciągle mi mówił, że plik blokady istnieje, nie było takiego pliku do usunięcia. Właśnie sprawdziłem inną gałąź, a następnie wróciłem do oryginalnej gałęzi i zauważyłem, że ta zmiana rozwiązała problem.


7

Jest podobny do powyższych metod, ale w moim przypadku miałem kilka z nich

.git/refs/heads/<branch_name>.lock

i był w stanie usunąć wszystkie naraz w ten sposób

find -name "*.lock" -exec xargs rm {} \;

4

Dla mnie problem był prostszy, to było w drzewie źródłowym, więc nie jestem pewien, ile to będzie miało zastosowanie do zwykłych rozwiązań, ale przypadkowo wybrałem gałąź master próbującą dokonać zatwierdzenia, a nie moich niezatwierdzonych zmian.

Zwykle nie byłby to problem, ale wcześniej zapobiegawczo wprowadziłem komunikat zatwierdzenia, aby móc śledzić, co robiłem dla tego małego sprintu, na którym byłem.

Zasadniczo rozpocząłem zatwierdzenie w nieprzydzielonym oddziale i przypadkowo próbowałem uruchomić kolejne zatwierdzenie w mojej gałęzi master.


4

Jeśli używasz CocoaPods i w pewnym momencie spartaczyłeś aktualizację lub instalację (ręcznie ją zabiłeś lub coś takiego), spróbuj

1) Usuwanie index.lockpliku (w .git/index.lock)

2) Usuń Podfile.lockplik.

3) Zrób nowy pod update

4) Spróbuj wydać polecenie git, które nie powiodło się (w moim przypadku było to git add .)


4

Jeśli jesteś użytkownikiem systemu Windows, wystąpi błąd 'rm' is not recognized as an internal or external command. To dlatego, że rm jest poleceniem Linuksa. Tak więc w systemie Windows możesz użyć poniżej, aby usunąć index.lockplik z .gitfolderu

del -f .git/index.lock

3

Może się zdarzyć, że twoja gałąź jest uszkodzona, utwórz nową gałąź git branch #check branch. Stworzyłem nowy oddział i działam.

branch -b "main"
git checkout -b "main"  #main is new branch
git add .
git commit -m "all files"
git remote add origin #**YOUR REPO**  https://github.com/tarun-techmarbles/wp-dump-sql-git-push.git
git push origin main  #push with new branch 

3

Chociaż istnieje alternatywa powyżej, ale to nie rozwiązało mojej. W moim przypadku usuwam wtyczkę „git” w ./zshrc i ponownie uruchamiam komputer, po czym problem zniknął. Myślę, że wtyczka zsh spowodowała konflikt z oryginalnym poleceniem git.


3

Wystąpił ten błąd podczas pod update. Rozwiązałem go usuwając index.lockplik w cocoapods„s .gitkatalogu.

rm -f /Users/my_user_name/.cocoapods/repos/master/.git/index.lock

To może komuś pomóc.


2

użyj następującego polecenia, jeśli masz do czynienia W tym repozytorium działa inny proces git, np. edytor otwarty przez 'git commit'. Upewnij się, że wszystkie procesy zostały zakończone, a następnie spróbuj ponownie. Jeśli nadal nie powiedzie się, proces git mógł ulec awarii wcześniej w tym repozytorium: usuń plik ręcznie, aby kontynuować.

rm -f .git / index.lock

git reset i po poleceniu reset użyj git status, git add i git commit -a lub git commit -m "twoja wiadomość", git push master master.


2

rm -f .git/index.locknie pomogło, ponieważ miałem zablokowany plik, którego nie można usunąć. Więc index.lockzostał również przechwycony przez jakąś aplikację.

Pobrałem alternatywę dla Unlockera o nazwie Lock Hunter i usunąłem oba pliki. Gitschwytali ich.


2

Mam takie same problemy, kiedy próbowałem przemieszczać plik w SourceTree.

Aby rozwiązać ten problem, przejdź do folderu .git w katalogu projektu i ręcznie usuń plik index.lock i gotowe.


Właściwie stwierdziłem w SourceTree, że zwykle wystarczy poczekać kilka sekund i spróbować ponownie.
mat

2

W przypadku, gdy może pomóc komuś innemu ... Próbowałem z linii poleceń rm -f .git/index.locki nie działałem (terminal nie pokazywał żadnego błędu). Właśnie poszedłem bezpośrednio do folderu .giti usunąłem index.lockplik.

Uwaga: .gitfolder znajduje się w głównym repozytorium i jest ukryty. W systemie Mac: Cmd+ Shift+, .aby wyświetlić ukryte pliki.


2

Dla mnie rozwiązanie było tak proste, jak zamknięcie mojego IDE, a następnie sprawdzenie. Mój kolega z drużyny zaakceptował mój PR i połączył kod za pośrednictwem TFS. Usunięcie plików .lock nie działało.


2

Usuń index.locktutaj:

<path to your repo>/.git/index.lock

Ponadto, jeśli twoje repozytorium ma podmoduły, usuń również index.locktutaj:

<path to your repo>/.git/modules/<path to your submodule>/index.lock

1

Próbowałem usunąć, .git/indexale nie działało, w końcu odinstalowuję go i usuwam wszystkie foldery, które mają gow nim nazwę, a następnie instaluję go ponownie, i działa!


1

Dla mnie z dowolnego powodu:

rm .git/index.lock

Nie działało, więc po prostu poszedłem do pliku .git i usunąłem go ręcznie, co działało fantastycznie.


jaka jest różnica między tą odpowiedzią a odpowiedzią zaakceptowaną?
J. Doe

0

tylko dla wyjaśnienia, dla tych, którzy zastanawiają się, dlaczego rm i del.

rm .git/index.lock - on a unix/linux system
del .git/index.lock - on a windows cmd prompt

możesz dodać, -faby wymusić operację, która działa.


0

Napotkałem ten sam problem. Musiałem zrobić niewiele więcej, aby rozwiązać ten problem. Najpierw usunąłem, index.locka następnie sklonowałem nowy kod z istniejącej lokalizacji repozytorium git. Miałem zmiany kodu w oddzielnej lokalizacji. Skopiowałem .gitfolder i .gitignoreplik i wkleiłem w folderze kodu, w którym dokonałem zmian kodu. Potem próbowałem zatwierdzić i naciskać, działało to płynnie. Być może ta informacja będzie pomocna, jeśli Twój problem nie zostanie rozwiązany powyżej.


0

Miałem ten sam problem przy użyciu SourceTree . Ale na moim hoście nie było żadnego pliku index.lock . Znalazłem plik pack-refs.lock i po usunięciu problem został rozwiązany.


0

napotkałem ten sam problem, problem polegał na tym, że próbowałem wypchnąć kod z xmlplikiem (używanym jako zestaw danych) o rozmiarze 1,3 GB, więc dodałem ten plik do, .gitignorea następnie rozwiązałem problem


0

Jeśli wylądujesz tutaj na podstawie tytułu pytania („Wydaje się, że w tym repozytorium działa inny proces git”), pamiętaj, że zaakceptowana odpowiedź nie będzie miała bezpośredniego zastosowania do ciebie, jeśli wiadomość w tytule tego pytania poprzedza inna wiadomość, taka jak ten poniżej:

fatal: cannot lock ref 'HEAD': Unable to create '/<PATH>/<TO>/<REPO>/.git/refs/heads/<BRANCH>.lock': File exists.

W takim przypadku powinieneś usunąć ten plik (.lock) zamiast .git / index.lock

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.