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?

Matt Corby
źródło
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.

Rohit Shedage
źródło
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
MJ
źródło
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.

Ibn Rushd
źródło
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?

Matt Corby
źródło
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.

Alex Sed
źródło
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 {} \;
Akif
źródło
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.

Vrezh Gulyan
źródło
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 .)

cumanzor
źródło
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
Indrajith Ekanayake
źródło
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 
Tarun Sharma
źródło
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.

Brady Huang
źródło
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.

Haseeb Iqbal
źródło
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.

Naveen
źródło
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.

CoolMind
źródło
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.

MayankD
źródło
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.

TomCobo
źródło
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.

Chloe Corrigan
źródł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
Manabu Nakazawa
źródło
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!

John Balvin Arias
źródło
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.

Vadim F.
źródło
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.

Ande Caleb
źródło
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.

Abhishek
źródło
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.

Vladimir
źródło
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

Dulanga Heshan
źródło
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

derekbaker783
źródło