Zdaję sobie sprawę, że istnieją podobne problemy z git związane z ostrzeżeniem „nie można odłączyć”, ale nie mogłem z nich skorzystać.
Główna różnica polega na tym, że działo się to wtedy, gdy w żaden sposób nie miałem do czynienia z modułami podrzędnymi (nigdy wcześniej nie miałem z nimi do czynienia). Stworzyłem gałąź o nazwie „upgrade”, usunąłem moje stare pliki frameworka i skopiowałem do nowych. Użyłem git add -A, a potem popełniłem wszystko. Kiedy próbowałem wyewidencjonować gałąź trunk, odpowiedziała następującymi błędami:
warning: unable to unlink requirements/views/sk/index.php: Permission denied
warning: unable to unlink requirements/views/sv/index.php: Permission denied
warning: unable to unlink requirements/views/zh/index.php: Permission denied
warning: unable to unlink requirements/views/zh_cn/index.php: Permission denied
warning: unable to unlink requirements/views/zh_tw/index.php: Permission denied
...itp. Są ich setki.
Na początku myślałem, że to po prostu problem z uprawnieniami, więc dodałem rekursywnie uprawnienia do zapisu grupowego do całego katalogu wymagań, ale nie było zmian.
Edycja: jak zasugerowałem w odpowiedzi poniżej, próbowałem zrobić to samo, ale wszystko inne było zamknięte. Nie miałem więcej szczęścia niż wcześniej.
Ten problem jest szczególnie osłabiający, ponieważ nie mogę przejść do pnia, aby wrócić do normalnego rozwoju.
sudo chown -R username directory
Odpowiedzi:
Zwykle widzę ten rodzaj błędu, gdy proces nie zwalnia uchwytu tych plików.
Upewnij się, że nic nie działa, a następnie spróbuj ponownie zapłacić.
Uwaga: może to być również związane ze sposobem, w jaki zainstalowano Git (w systemie Windows UAC może generować problem, jeśli msysgit jest zainstalowany w
C:\Program
lubC:\Program Files
, zobacz " msysgit - sh.exe - fork: Odmowa uprawnień - Vista 64-bitowa " i komentarz 2 z numer 437 )Uwaga: jak pokazano poniżej , częstą inną przyczyną problemu jest problem z prawami do katalogu (niewłaściwy właściciel), niekoniecznie do pliku, którego nie można odłączyć.
źródło
git checkout -f master
W moim pierwszym spotkaniu z tym błędem mój użytkownik miał prawa do „zapisu” do pliku, ale nie do katalogu zawierającego. Sprawdź uprawnienia katalogu zawierającego plik.
źródło
„Odłącz” zasadniczo oznacza w tym przypadku „usuń plik”.
Ten błąd nie jest spowodowany przez sam git. Powinieneś mieć podobne błędy, usuwając te pliki ręcznie, w wierszu poleceń lub eksploratorze plików.
źródło
Nie masz uprawnień dostępu, być może dlatego, że nie jesteś właścicielem.
Napraw, zmieniając właściciela na siebie:
źródło
Miałem problem z plikiem default-settings.php w drupal 7. W tym przypadku nie mogłem go usunąć ani przywrócić, tak jak powiedział @rtconner. Nie miałem aplikacji ani niczego, co używa tego pliku, a skończyło się to błędem uprawnień.
Dodałem
chmod 777 *
do folderu, a potem mogłem go przywrócić bez problemu.źródło
777
w żadnym folderze. To rozwiązało mój problem, ale szybko zmieniłem go z powrotem na domyślny po rozwiązaniu. Dzięki!Aby to zrobić, możesz zmienić uprawnienia do zapisu.
To polecenie nada
'w'
uprawnienia do wszystkich folderów w bieżącym katalogu.źródło
Natknąłem się na ten problem za każdym razem, gdy uruchamiałem „git repack” lub „git gc” na moich maszynach z systemem OS X, nawet podczas uruchamiania git z uprawnieniami administratora, i ostatecznie rozwiązałem go po przejściu na tę stronę: http://hints.macworld.com /comment.php?mode=view&cid=1734
Rozwiązaniem jest otwarcie terminala, przejście do repozytorium git, cd do folderu .git, a następnie:
Jeśli to był problem, wtedy twoje polecenia git będą działać normalnie.
źródło
Może się to również zdarzyć, gdy:
Uruchomiłeś proces w kontenerze Docker i:
Niektóre pliki zostały wygenerowane przez ten proces i:
Miejsce docelowe plików jest montowane jako wolumin na hoście platformy Docker i:
Pracujesz
git
na hoście Docker.W takim przypadku przygotuj pliki, które chcesz zatwierdzić i uruchom:
Pliki spełniające powyższe kryteria będą miały przedrostek:
Są własnością
root
i nie można ich zapisywać, co nie jest dobre. Aby naprawić ten bieg:Czystszym rozwiązaniem byłoby prawdopodobnie użycie
--user
opcji, zobacz to dla Dockera i to dla Docker Compose .źródło
Tym, którzy używają Intellij , jak powiedział @rtconner, ten problem nie jest spowodowany przez git. Ponieważ IDE jest zablokowane, plik (i) git nie może go odłączyć. Musisz więc zamknąć swoje IDE, a następnie spróbować połączyć je (lub cokolwiek chcesz) za pomocą wiersza poleceń.
źródło
W moim przypadku był to znak „:” w nazwie folderu, który uniemożliwiał repozytorium git wyewidencjonowanie w systemie Windows.
źródło
na terminalu na Macu po prostu to robię
i wtedy
źródło
Miałem ten błąd na maszynie wirtualnej (z systemem Ubuntu), kiedy próbowałem to zrobić
git reset --hard
.Poprawka polegała po prostu na uruchomieniu
git reset --hard
z komputera hosta OS X.źródło
Żadna z innych sugestii nie zadziałała, ale to zadziałało:
sudo git reflog expire --expire=now --all && sudo git gc --prune=now --aggressive
źródło
W moim przypadku mój katalog Windows znajduje się w folderze Dropbox. Nie jest to kwestia specyficzna dla Git. Kiedy plik (w tym przypadku plik blokady) został właśnie utworzony, Dropbox potrzebuje kolejnej sekundy, aby przeprowadzić synchronizację. W tym czasie plik jest używany przez Dropbox i żaden program innej firmy (w tym przypadku Git) nie może go usunąć.
Moim rozwiązaniem jest zamknięcie Dropbox, a tym samym uniknięcie zakulisowej magii synchronizacji plików Dropbox.
źródło
Mam napotkał ten błąd i jest to spowodowane złym „właściciela / grupy” w pliku / folderu . Musisz zwrócić się o pomoc do administratora serwera, aby zmienić „właściciela / grupę” tego pliku / folderu i spróbować ponownie, używając polecenia „git pull”. Lub jeśli jesteś sudoerem, po prostu sudo chown „Twoja nazwa właściciela / nazwa Twojej grupy” i spróbuj ponownie pobrać repozytorium. Spróbuj, na mnie działa w 100%!
źródło
Upewnij się, że żadne skojarzone procesy lub wątki nie są uruchomione i w razie potrzeby zakończ zadanie lub wymuś zamknięcie.
Upewnij się, że zmieniłeś uprawnienia własności.
źródło
Ogólnie rzecz biorąc, jeśli dzieje się to w systemie Windows i używasz tortoisegit , jest to pamięć podręczna statusu tortoisegit . Zabij ten proces, a zostanie uwolniony.
źródło
git status
z wiersza poleceń.Po prostu musiałem przełączyć użytkownika z Ubuntu na moją rzeczywistą nazwę użytkownika, pod którą najpierw zrobiłem coś. To naprawiło.
źródło
Rozwiązany dla mnie przez ustawienie mojego klienta git (GitExtensions) tak, aby zawsze działał w trybie administratora.
źródło
Miałem ten problem podczas korzystania z
IntelliJ
(14.1.3 Ultimate), chciałem cofnąć zmiany w jakimś pliku.Rozwiązany przez zamknięcie
Git Bash
otwartego w innym oknie - kolejna próba przywróceniaIntelliJ
zadziałała.źródło
Napotkałem ten błąd i myślę, że problem polegał na tym, że uruchomiłem Eclipse i utworzyłem pliki jako administrator, dlatego były one własnością administratora (zauważone po uruchomieniu polecenia „ls -la” w folderze). Kiedy później próbowałem ukryć pliki, nie pozwalało mi to („nie można odłączyć plików” i tak dalej). Wykonanie chmod na plikach było rozwiązaniem dla mnie.
źródło
git gc działał dla mnie (w nowej karcie). Dostawałem to z każdym rebase'em. Dzięki http://www.saintsatplay.com/blog/2016/02/dealing-with-git-unlink-file-errors#.W4WWNZMzZZJ
źródło
Wszystko, co musisz zrobić, to podać uprawnienia, uruchomić poniższe polecenie z katalogu głównego projektu:
źródło
Miałem ten sam problem, próbowałem kilku alternatyw, jak sugerowali inni.
Ale ostatecznie udzielenie poprawnych uprawnień do folderu .git rozwiązuje problemy.
źródło
W moim przypadku problem z uprawnieniami rozwiązany przez ustawienie
www-data
jako właściciel:źródło
Myślę, że chodzi o twoje uprawnienia do pliku:
źródło