czy dana odpowiedź działała dla Ciebie, jeśli przeglądarka procesów nie działa, uruchom ponownie, a następnie możesz usunąć plik, możesz także zaakceptować odpowiedź, jeśli zadziałała
dhaval
1
Sprawdź także, czy proces git ma uprawnienia do zapisu w tym pliku.
Może to oznaczać, że inny program korzysta z pliku, co uniemożliwia gitowi „przeniesienie” pliku do lub z katalogu roboczego podczas próby zmiany gałęzi.
Zdarzyło mi się to w systemie Windows Vista, w którym zaćmienie to program „używający” pliku. Plik może nie być w rzeczywistości otwarty w środowisku Eclipse, ale mógł zostać otwarty przez proces uruchamiany przez środowisko Eclipse.
W takim przypadku spróbuj zamknąć plik w dowolnej aplikacji, która mogła go użyć. Jeśli to nie zadziała, całkowicie zamknij wszystkie aplikacje, które mogły otworzyć plik.
W systemie Windows użyj ProcessExplorer, aby znaleźć proces, w którym plik jest otwarty.
Dave C
2
Czy istnieje sposób na napisanie skryptu, np. „Jeśli tego pliku nie można usunąć (np. Plik po prostu nie istnieje), po prostu pomiń plik”.
2xMax
14
W moim przypadku było to Visual Studio i jego wtyczka Git.
Michał Powaga
8
W systemie Windows, jeśli nie masz dostępnego ProcessExplorer lub nie chcesz go pobrać, możesz uruchomić (Windows + R) „resmon”, przejść do zakładki CPU i wyszukać nazwę pliku w polu tekstowym „Associated Identifiers”.
Raphael
6
Jeśli go użyjesz, GitKrakenmożesz go otrzymać, wykonując polecenia jak
baza
285
Miałem ten problem i rozwiązałem go poleceniem: git gc
powyższe polecenie usuwa temp i niepotrzebne pliki. (Śmieciarz.)
git pullinicjowane git gcautomatycznie i gc próbował uzyskać dostęp do niektórych plików .pack i .inx. Były one utrzymywane przez proces „Windows git”, który posiadał git pullpolecenie. Uruchamianie git gcręczne i git pullpóźniej - naprawdę rozwiązuje problem.
Nikita
4
Podczas pracy git gcponownie pojawił się ten sam błąd, gdy gcbył w toku
Prakash K
4
„Uruchamianie git gc ręcznie, a potem - git pull naprawdę rozwiązuje problem.” To pomogło. Dziękuję Nikita.
sangam
To mi też pomogło. Uruchomiłem to w systemie Windows z Git Bash
Ascalonian
Po rozpoczęciu ściągania git otrzymałem ten błąd. Nacisnąłem CTRL + C, aby zatrzymać ściąganie, uruchom git gc, a następnie ponownie uruchom git, problem zniknął i nic nie zostało zerwane przez przerwanie ściągania.
Jest to odpowiedź specyficzna dla systemu Windows, więc jestem świadomy, że nie jest ona dla ciebie odpowiednia ... Po prostu uwzględniam ją z korzyścią dla przyszłych użytkowników.
W moim przypadku było tak, ponieważ uruchomiłem Git z wiersza poleceń bez podniesionego poziomu uprawnień. „Uruchom jako administrator” naprawiło to dla mnie.
Pracował dla mnie. Uruchom VS jako administrator, a następnie uruchomiłem wiersz polecenia z VS
Sentinel
3
I: Ctrl+Cwpisałem, aby zakończyć bardzo długą listę plików, których nie można odtworzyć; opuściłem gitbash, my IDE i aplikację Windows GitHub; zrestartowałem gitbash w podwyższonym trybie „Uruchom jako administrator”; i pobiegł git gc --aggressive. Zajęło to trochę czasu, ale udało się to bez błędów.
Mark McClelland,
Jeśli uważasz, że jest to duplikat, powinieneś oflagować go jako taki, a nie dodawać odpowiedzi wskazującej na inną odpowiedź
Liam,
2
@Liam To pytanie jest starsze, ale ta odpowiedź była tylko na inne pytanie i nie ma tylko jednej odpowiedzi na to pytanie, co utrudnia ustawienie jednego jako duplikatu.
wrz
To działało całkiem dobrze dla mnie. Żadna z poprzednich odpowiedzi nie. Wielkie dzięki.
Natrafiłem na ten problem na komputerze z systemem Windows i to rozwiązanie początkowo nie działało. Jednak po uruchomieniu tego polecenia z wiersza polecenia administratora rozwiązało to mój problem.
William W
23
W moim przypadku nie ma procesów dotykających pliku lub katalogu. Może się zdarza, jeśli ścieżka jest bardzo długa, ponieważ ograniczenie systemu operacyjnego (Windows). Spróbuj włączyć flagę obsługi długiej ścieżki w globalnej konfiguracji git, jak pokazano poniżej:
git config --global core.longpaths true
lub spróbuj ustawić flagę odpowiedzi tak / nie, jeśli nie jest dla ciebie sprzeczna
set GIT_ASK_YESNO=false
Jeśli ścieżka jest za długa, nie znalazłem udanego rozwiązania.
To jest jedyna odpowiedź, która pomogła w moim przypadku, używając Android Studio
0101100101
10
Gdy używam gitkraken i wiersza polecenia, napotkałem ten sam problem. A potem uruchamiam git gcpolecenie, co rozwiązało mój problem. Cieszę się więc i chcę podzielić się niektórymi punktami, które mogą być pomocne.
Co git gczrobisz
git gc usuwanie nieosiągalnych obiektów, które mogły zostać utworzone na podstawie wcześniejszych wywołań git add.
Kiedy biegać git gc?
Od doc zachęca użytkowników do regularnego uruchamiania tego zadania w każdym repozytorium, aby utrzymać dobre wykorzystanie miejsca na dysku i dobrą wydajność operacyjną.
Jak ustawić automatyczne konfigurowanie?
Niektóre polecenia git mogą automatycznie uruchamiać git gc; szczegóły - patrz flaga --auto poniżej. Jeśli wiesz, co robisz i chcesz tylko trwale wyłączyć to zachowanie bez dalszych rozważań, po prostu zrób to
W moim przypadku (Win8.1, uruchomiony TortoiseGit) to proces o nazwie „Pamięć podręczna stanu TortoiseSVN” blokował plik.
Zabicie go pozwoliło mi uruchomić „git gc” bez żadnych problemów. Powyższy proces jest uruchamiany przez TortoiseGit, więc nie ma potrzeby ręcznego restartowania go.
Miałem tego rodzaju problem z Windows 7 i okazało się, że jest to spowodowane osieroconym git.exeprocesem.
Aby go rozwiązać, otwórz Menedżera zadań i zabij wszystkie git.exeprocesy.
Ponieważ gitpolecenia są krótkotrwałe, zwykle nie powinno się ich nigdy widzieć git.exew Menedżerze zadań. Kiedy tam są, zwykle oznacza to, że coś jest nie tak i powinieneś zabić te procesy.
Miałem ten problem z .tmpplikami w /.git/objects/packfolderze. Myślę, że coś się nie udało podczas wypychania lub ściągania, więc usunąłem te pliki tymczasowe i zresetowałem HEAD do ostatniego zatwierdzenia. Nie jestem pewien, czy jest to zalecane, ale zadziałało dla mnie. Również git count-objects -vdał mi listę .tmpplików, które nie należą do folderu pack.
Lub, aby ukryć wiadomości r / n w systemie Windows git open cmd.exei uruchomić:
Chociaż jest to próba odpowiedzi, nie dodaje niczego, co nie jest jeszcze objęte innymi odpowiedziami (takimi jak ta ). Jeśli próbujesz potwierdzić, że to rozwiązanie działa lub chcesz podziękować autorowi tej odpowiedzi, nie publikuj odpowiedzi, aby to zrobić. Gdy zyskasz trochę więcej reputacji , zyskasz wystarczające uprawnienia do głosowania pozytywnych odpowiedzi, co jest sposobem przepełnienia stosu, by powiedzieć „dziękuję”.
Po wypróbowaniu różnych rozwiązań w końcu git clean -fmi pomogło.
EDYCJA: Ponownie napotkałem problem - wydaje się, że pomocne jest zamknięcie wszystkich procesów zależnych od git (takich jak gitbash, Eclipse IDE itp.)
Jak wspomniano powyżej, coś innego przechowuje pliki. Chodzi o to, że program nie wygląda dla nas podejrzanie. Próbowałem zrobić git pull z konsoli, mając otwarty GitKraken. Zamknięcie GitKraken naprawiło problem.
Unlink of file 'foo.bar' failed. Should I try again? (y/n)
Ponieważ inny program używa tego pliku . Na przykład, kiedy uruchamiam aplikację internetową Java w modelu debugowania lub uruchamiam aplikację internetową na serwerze, nie mogę usunąć pliku dziennika. Wyłącz serwer aplikacji (lub wyłącz proces debugowania), spróbuj ponownie
Natknąłem się na ten problem, uruchamiając jednocześnie git Bash i Eclipse EGit. Rozwiązanie: zamknij Eclipse. Nie zaszkodzi też biegać, git gcjak wspomniał @khilo.
Natknąłem się na ten problem w systemie Windows, możesz uruchomić git bash jako administrator, a następnie wykonać polecenia, które rozwiązały problem.
Jeśli tworzysz aplikację internetową, częstym powodem jest zapomnienie wyłączenia serwera. Na przykład może to być prosty proces Node.js lub w systemie Windows proces IIS działa bardziej dyskretnie jako proces w tle.
Próbowałem każdej wskazówki na tej stronie i nic nie pomogło. Robiłem a git fetchi git reset --hard origin/developmentdał mi błąd unkink. Nie mogłem zresetować do ostatniego zatwierdzenia.
Pomogło mi sprawdzenie innej gałęzi, a następnie sprawdzenie poprzedniej gałęzi. Bardzo dziwne, ale rozwiązało problem.
Jeśli zamknięcie IDE i uruchomienie różnych komend git wymienionych tutaj nie pomoże, spróbuj ręcznie zabić wszystkie działające procesy Java. Prawdopodobnie miałem proces Java, który pozostał z zaćmienia, który w jakiś sposób utrzymywał otwarty plik konfiguracyjny.
Jeśli używasz Dockera i systemu Windows 10, możesz zatrzymać kontenery, w których plik może być uruchomiony. Aby wyświetlić statusy swoich kontenerów, uruchom
docker ps -a
Aby je zatrzymać, po prostu biegnij
docker stop <container name or container id>
To działało dla mnie, ponieważ uruchamiam moje lokalne pliki przy użyciu pliku .sh
W systemie Windows ten błąd git clonewystępował na (dość dużym) repozytorium. Zamknięty SmartGit i przerwał moje kopii oprogramowania (CrashPlan), a potem to działało. Nie jestem pewien, który z nich zrobił lewę, ale jeśli uruchomisz któryś z nich, może to zrobić również dla ciebie.
Miałem ten sam problem podczas wykonywania ściągania git i jak wspomniano powyżej, było to spowodowane programem, który przechowywał te pliki i nie pozwalał na ściąganie git. Zamknięcie programu pomogło. Zwykle IDE (jak Eclipse), z którego sprawdzane są pliki, będzie trzymał je w tle. Zamknięcie tego samego i ponowne uruchomienie git pull rozwiązało problem dla mnie.
Odpowiedzi:
Może to oznaczać, że inny program korzysta z pliku, co uniemożliwia gitowi „przeniesienie” pliku do lub z katalogu roboczego podczas próby zmiany gałęzi.
Zdarzyło mi się to w systemie Windows Vista, w którym zaćmienie to program „używający” pliku. Plik może nie być w rzeczywistości otwarty w środowisku Eclipse, ale mógł zostać otwarty przez proces uruchamiany przez środowisko Eclipse.
W takim przypadku spróbuj zamknąć plik w dowolnej aplikacji, która mogła go użyć. Jeśli to nie zadziała, całkowicie zamknij wszystkie aplikacje, które mogły otworzyć plik.
źródło
GitKraken
możesz go otrzymać, wykonując polecenia jakMiałem ten problem i rozwiązałem go poleceniem:
git gc
powyższe polecenie usuwa temp i niepotrzebne pliki. (Śmieciarz.)źródło
git pull
inicjowanegit gc
automatycznie i gc próbował uzyskać dostęp do niektórych plików .pack i .inx. Były one utrzymywane przez proces „Windows git”, który posiadałgit pull
polecenie. Uruchamianiegit gc
ręczne igit pull
później - naprawdę rozwiązuje problem.git gc
ponownie pojawił się ten sam błąd, gdygc
był w tokuto rozwiązanie tutaj działało dla mnie:
źródło
Ctrl+C
wpisałem, aby zakończyć bardzo długą listę plików, których nie można odtworzyć; opuściłem gitbash, my IDE i aplikację Windows GitHub; zrestartowałem gitbash w podwyższonym trybie „Uruchom jako administrator”; i pobiegłgit gc --aggressive
. Zajęło to trochę czasu, ale udało się to bez błędów.Napotkałem ten problem podczas robienia
git pull
.Próbowałem
git gc
i to rozwiązało mój problem.źródło
W moim przypadku nie ma procesów dotykających pliku lub katalogu. Może się zdarza, jeśli ścieżka jest bardzo długa, ponieważ ograniczenie systemu operacyjnego (Windows). Spróbuj włączyć flagę obsługi długiej ścieżki w globalnej konfiguracji git, jak pokazano poniżej:
lub spróbuj ustawić flagę odpowiedzi tak / nie, jeśli nie jest dla ciebie sprzeczna
Jeśli ścieżka jest za długa, nie znalazłem udanego rozwiązania.
źródło
GIT_ASK_YESNO
, nie mogę znaleźć informacji o tym. Skąd to pochodzi ?core.longpaths
z dodatkowym: reset - twardy prune gc działał dla mnie - ale musiał zamknąć AndroidStudio, aby nie zepsuć się jegoPróbowałem
git gc
i to rozwiązało mój problem.źródło
Może to być przydatne dla kogoś; jeśli wszystkie powyższe nie zadziałały, wykonaj następujące kroki:
Zamknij swoje IDE (moje to Eclipse, nie jestem pewien, czy dotyczy Intellij i innych) lub jakiejkolwiek innej aplikacji, która może używać git.
Otwórz git z wiersza poleceń (w moim przypadku miałem git bash) i uruchom
git gc
jak wspominali inni.To zrobiło dla mnie magię.
źródło
Gdy używam gitkraken i wiersza polecenia, napotkałem ten sam problem. A potem uruchamiam
git gc
polecenie, co rozwiązało mój problem. Cieszę się więc i chcę podzielić się niektórymi punktami, które mogą być pomocne.Co
git gc
zrobiszgit gc
usuwanie nieosiągalnych obiektów, które mogły zostać utworzone na podstawie wcześniejszych wywołań git add.Kiedy biegać
git gc
?Od doc zachęca użytkowników do regularnego uruchamiania tego zadania w każdym repozytorium, aby utrzymać dobre wykorzystanie miejsca na dysku i dobrą wydajność operacyjną.
Jak ustawić automatyczne konfigurowanie?
Niektóre polecenia git mogą automatycznie uruchamiać git gc; szczegóły - patrz flaga --auto poniżej. Jeśli wiesz, co robisz i chcesz tylko trwale wyłączyć to zachowanie bez dalszych rozważań, po prostu zrób to
źródło
W moim przypadku (Win8.1, uruchomiony TortoiseGit) to proces o nazwie „Pamięć podręczna stanu TortoiseSVN” blokował plik.
Zabicie go pozwoliło mi uruchomić „git gc” bez żadnych problemów. Powyższy proces jest uruchamiany przez TortoiseGit, więc nie ma potrzeby ręcznego restartowania go.
źródło
Miałem tego rodzaju problem z Windows 7 i okazało się, że jest to spowodowane osieroconym
git.exe
procesem.Aby go rozwiązać, otwórz Menedżera zadań i zabij wszystkie
git.exe
procesy.Ponieważ
git
polecenia są krótkotrwałe, zwykle nie powinno się ich nigdy widziećgit.exe
w Menedżerze zadań. Kiedy tam są, zwykle oznacza to, że coś jest nie tak i powinieneś zabić te procesy.źródło
Mam ten problem w systemie Windows. Zamknąłem IDE (Android Studio) i wybrałem TAK w powłoce git. Zadziałało.
źródło
W systemie Windows 8: uruchomiłem git gc i powiedziało, że git gc już działa, uruchomiłem git gc --force i uruchomił się moduł odśmiecania.
Mógłbym wtedy przełączać gałęzie i łączyć się bez żadnych problemów, spróbuj git gc --force.
Być może proces gc nie zatrzymał się z wdziękiem z tego czy innego powodu.
źródło
Miałem ten problem z
.tmp
plikami w/.git/objects/pack
folderze. Myślę, że coś się nie udało podczas wypychania lub ściągania, więc usunąłem te pliki tymczasowe i zresetowałem HEAD do ostatniego zatwierdzenia. Nie jestem pewien, czy jest to zalecane, ale zadziałało dla mnie. Równieżgit count-objects -v
dał mi listę.tmp
plików, które nie należą do folderu pack.Lub, aby ukryć wiadomości r / n w systemie Windows
git open cmd.exe
i uruchomić:tutaj: https://twitter.com/petercamfield/status/494805475733807104
źródło
git gc
,git count-objects -v
pomaga w identyfikacji pozostałości obiektów tymczasowych wpack
folderze.Byłem w stanie rozwiązać ten problem, otwierając Powershell jako Administrator i stamtąd
git checkout <branch_name>
źródło
Napotkałem ten sam problem podczas wykonywania „git pull”. Próbowałem ręcznego czyszczenia komendy git „git gc” i to rozwiązało mój problem.
źródło
Po wypróbowaniu różnych rozwiązań w końcu
git clean -f
mi pomogło.EDYCJA: Ponownie napotkałem problem - wydaje się, że pomocne jest zamknięcie wszystkich procesów zależnych od git (takich jak gitbash, Eclipse IDE itp.)
źródło
Jak wspomniano powyżej, coś innego przechowuje pliki. Chodzi o to, że program nie wygląda dla nas podejrzanie. Próbowałem zrobić git pull z konsoli, mając otwarty GitKraken. Zamknięcie GitKraken naprawiło problem.
źródło
Po uruchomieniu polecenia
Widzę błąd
Ponieważ inny program używa tego pliku . Na przykład, kiedy uruchamiam aplikację internetową Java w modelu debugowania lub uruchamiam aplikację internetową na serwerze, nie mogę usunąć pliku dziennika. Wyłącz serwer aplikacji (lub wyłącz proces debugowania), spróbuj ponownie
Widzę, że plik został usunięty.
źródło
Może to być osobne okno uruchomione gitk, aby zobaczyć historię git.
Wystarczy zamknąć to okno, aby rozwiązać ten problem.
źródło
Natknąłem się na ten problem, uruchamiając jednocześnie git Bash i Eclipse EGit. Rozwiązanie: zamknij Eclipse. Nie zaszkodzi też biegać,
git gc
jak wspomniał @khilo.źródło
Po tym, jak żadna z powyższych odpowiedzi nie zadziałała, bieganie
git fetch -p
zrobiło to za mnie.https://git-scm.com/docs/git-fetch
źródło
Natknąłem się na ten problem w systemie Windows, możesz uruchomić git bash jako administrator, a następnie wykonać polecenia, które rozwiązały problem.
źródło
Jeśli tworzysz aplikację internetową, częstym powodem jest zapomnienie wyłączenia serwera. Na przykład może to być prosty proces Node.js lub w systemie Windows proces IIS działa bardziej dyskretnie jako proces w tle.
źródło
Próbowałem każdej wskazówki na tej stronie i nic nie pomogło. Robiłem a
git fetch
igit reset --hard origin/development
dał mi błąd unkink. Nie mogłem zresetować do ostatniego zatwierdzenia.Pomogło mi sprawdzenie innej gałęzi, a następnie sprawdzenie poprzedniej gałęzi. Bardzo dziwne, ale rozwiązało problem.
źródło
Jeśli zamknięcie IDE i uruchomienie różnych komend git wymienionych tutaj nie pomoże, spróbuj ręcznie zabić wszystkie działające procesy Java. Prawdopodobnie miałem proces Java, który pozostał z zaćmienia, który w jakiś sposób utrzymywał otwarty plik konfiguracyjny.
źródło
Jeśli używasz Dockera i systemu Windows 10, możesz zatrzymać kontenery, w których plik może być uruchomiony. Aby wyświetlić statusy swoich kontenerów, uruchom
docker ps -a
Aby je zatrzymać, po prostu biegnij
docker stop <container name or container id>
To działało dla mnie, ponieważ uruchamiam moje lokalne pliki przy użyciu pliku .sh
źródło
Pracowałem dla mnie, wypróbowałem na Windowsie:
Zatrzymaj działanie serwera z IDE lub zamknij IDE
Intellij / Ecllipse lub dowolny, będzie działać.
źródło
W systemie Windows ten błąd
git clone
występował na (dość dużym) repozytorium. Zamknięty SmartGit i przerwał moje kopii oprogramowania (CrashPlan), a potem to działało. Nie jestem pewien, który z nich zrobił lewę, ale jeśli uruchomisz któryś z nich, może to zrobić również dla ciebie.źródło
Miałem ten sam problem podczas wykonywania ściągania git i jak wspomniano powyżej, było to spowodowane programem, który przechowywał te pliki i nie pozwalał na ściąganie git. Zamknięcie programu pomogło. Zwykle IDE (jak Eclipse), z którego sprawdzane są pliki, będzie trzymał je w tle. Zamknięcie tego samego i ponowne uruchomienie git pull rozwiązało problem dla mnie.
źródło
Miałem ten sam błąd, a zamknięcie aplikacji, w której plik był otwarty, rozwiązało problem. Byłem w stanie wrócić i nacisnąć „Y”
źródło