Próba pobrania polecenia git z błędem: nie można otworzyć .git / FETCH_HEAD: Odmowa dostępu


209

Pomóż mi proszę, próbuję uruchomić to w moim terminalu:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Potem próbuję tego

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Pomóż mi, nie rozumiem tego problemu.


Czy dodałeś swój klucz publiczny do konta github?
madhead

3
Czy masz uprawnienia do zapisu w lokalnym katalogu i plikach, w których próbujesz pobrać? Prawdopodobnie sudonie pomaga tutaj wcale, ponieważ potrzebuje dostępu do twoich kluczy ssh (nie root).
Benjamin Bannier

Miałem ten problem i rozwiązałem go, przyznając mojemu użytkownikowi uprawnienia do modyfikacji i pełnego dostępu do tego folderu (Windows)
Frank

Odpowiedzi:


193

Wygląda na to, że pierwszy nie działa, ponieważ użytkownik nie ma uprawnień do zmiany tego katalogu, a drugi, ponieważ użytkownik root nie ma odpowiednich kluczy SSH do uzyskania dostępu do tego repozytorium git.

W zależności od tego, co próbujesz zrobić, może być lepiej sklonować repozytorium do innego katalogu, a może chowndo bieżącego katalogu, aby mieć pełny dostęp dla użytkownika


Mam do czynienia z podobnym problemem i nie jestem pewien, czy mogę udzielić mojemu www-dataużytkownikowi uprawnienia do aktualizacji .gitkatalogu. Wywołuję skrypt powłoki za pomocą php przez http w przeglądarce. Szczegóły tutaj
KillABug

13
Dzieje się tak często, gdy przypadkowo zapominasz, że biegniesz sudo sui działasz jako root w repozytorium. Prosty sudo chown -R <username> .w tym katalogu działa magicznie!
Ray

149

Sprawdź, czy masz wystarczające uprawnienia do .git/katalogu. Powinieneś mieć uprawnienia do zapisu. Możesz ustawić je za pomocą następującego polecenia.

Przejdź do folderu projektu:

chown -R youruser:yourgroup .git/

1
To daje michown: youruser: Invalid argument
zakdances

43
Powinno byćchown -R youruser .git/
zmiksuj

1
Musiałem chown .git/i jego folder nadrzędny, aby to działało
zadubz

Wydaje się, że to bardzo częsty problem. Ok, jeśli pracujesz z innym użytkownikiem, a coś innego użytkownika zmieniło twoje uprawnienia, jest to trochę trudne.
René Höhle,

Jeśli chownnie działa, uruchom także to poleceniesudo chmod 0777 -R .git/
Kiran

48

Jeśli chcesz zezwolić grupie,

sudo chmod g+w .git -R

działało najlepiej dla mnie.

W systemie MacOS

sudo chmod -R g+w .git 

29

Jest to problem z uprawnieniami UNIX. Nie używaj sudodo klonowania repozytorium. Nie masz takich samych kluczy ssh jak root i i tak nie powinieneś pracować jako root. Spróbuj ls -laznaleźć uprawnienia do plików i użyj chmod(lub sudo chown), aby je naprawić. Mam nadzieję, że to pomaga.


Dokładnie to! Natknąłem się na ten problem, ponieważ musiałem to zrobić sudo clone, aby zaakceptować nową umowę licencyjną XCode. Odpowiedzią jest zaakceptowanie umowy, a następnie sklonowanie bez sudo.
Barnaby


21

W odpowiedzi na ten problem upewnij się, że .git / FETCH_HEAD ma uprawnienia do zapisu i wszystko będzie gotowe.

Miałem ten problem w systemie Windows i został rozwiązany przez udzielenie uprawnień do zapisu.

W unixie można uruchomić chmod a+rw .git/FETCH_HEADz repozytorium projektu, po którym powinien działać.


nie działa .git/FETCH_HEADsam, jeśli problem z uprawnieniami jest włączony .git.
Cœur

17

Spróbuj w ten sposób,

Krok 1: Najpierw sprawdź, kim jesteś? zwróci bieżącą nazwę użytkownika, np. ubuntu

$ whoami 

Krok 2: Następnie ustaw uprawnienia dla bieżącego użytkownika, w tym przypadku ubuntu przez

sudo chown -R ubuntu .git/

to działa dla mnie podczas instalacji dyskursu na Amazon lightail ubuntu
Jide

11

W moim przypadku miałem dostęp tylko do odczytu do pliku .git / FETCH_HEAD. Musiałem zrobić „sudo chmod g + w .git / FETCH_HEAD”, aby móc wykonać polecenie ściągnięcia.


nie działa .git/FETCH_HEADsam, jeśli problem z uprawnieniami jest włączony .git.
Cœur

Musiałem zezwolić na dostęp do zapisu w folderze git dla grupysudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, idealne rozwiązanie.
Rishi Kulshreshtha

9

Miałem pierwszy problem (odmowa dostępu FETCH_HEAD) w systemie Windows.

Naprawiłem to, uruchamiając Git Bash jako administrator (kliknij prawym przyciskiem myszy, uruchom jako administrator).


9

Jeśli nie dodałeś się do grupy, która jest właścicielem .git/, powinieneś.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

Co to robi:

  1. sprawdza, która grupa jest właścicielem .git/i dodaje użytkownika do tej grupy.
  2. upewnia się, że członkowie grupy mają takie same uprawnienia jak właściciel .git/.
  3. powtarza to .gitignore, co prawdopodobnie będzie potrzebne
  4. wylogowuje Cię i ponownie loguje, aby odświeżyć uprawnienia do pliku członkostwa w grupie

Jeśli niedawno zrobiłeś coś takiego (dodałeś się do grupy, która jest właścicielem .git/), musisz się wylogować i zalogować ponownie, zanim będziesz mógł pisać .git/FETCH_HEADw swoim czasie git pull.


7

Ustaw uprawnienia dla bieżącego użytkownika, uruchamiając polecenie

$ sudo chown -R <username> .git/



4

Gdy korzystałem z systemu Windows 7, miałem ten problem, ponieważ ukryłem folder .git. Uprawnienia były w porządku, po prostu były ukryte. Wyświetlanie folderu rozwiązało go.


Ukryty katalog, kto by chciał.
Ian Newland


3

To działało dla mnie:

  1. Kliknij prawym przyciskiem myszy folder .git
  2. kliknij, aby uzyskać informacje
  3. ustaw uprawnienia dla swojego użytkownika
  4. kliknij ikonę koła zębatego i kliknij Zastosuj do zamkniętych elementów

Żadne więcej uprawnień nie odmawia błędów w git. 🎉


2

Spójrz na właściciela i grupę .gitkatalogu za pomocą (najpierw przejdź do katalogu nadrzędnego .git) ll .git, spójrz na grupę i właściciela katalogu, dodaj użytkownika do grupy właściciela za pomocąsudo usermod -a -G yourusername groupsofonwner , a następnie wyloguj => zaloguj się i wszystko zaczyna działać .

Tak w lecie

  1. przejdź do katalogu nadrzędnego git

    $cd your path
    
  2. znajdź właściciela grupy .gitdirecotry

    $ll .git     
    
  3. dodaj użytkownika do tej grupy

    $usermod -a -G yourusername ownergroupofgit
    
  4. Wyloguj się i zaloguj do systemu, aby ta zmiana zaczęła obowiązywać.

  5. Ciesz się;)


2

Ten problem występuje, gdy folder .git jest ukryty, a wszystkie pliki w nim również ukryte. Zrób tylko ukryty folder .git bez aktualizacji plików rekurencyjnych i będzie działać.


2

Przyczyny tego błędu mogą być wielokrotne, ale w moim przypadku zaktualizowałem gałąź rootem, a kiedy próbowałem zaktualizować ją zwykłym użytkownikiem, pojawia się błąd.

wypróbuj oba rozwiązania, które powinny Ci pomóc

1- sudo chmod g+w .git -R

jeśli to nie zadziała, wypróbuj następne rozwiązanie, mając nadzieję, że rozwiąże Twój problem

2 - rm -f .git/FETCH_HEAD

1

Miałem tę wiadomość, gdy korzystałem z rozszerzeń git dla systemu Windows. Moim rozwiązaniem było po prostu zamknięcie rozszerzeń git, a następnie ponowne otwarcie jako administrator



1

Ten problem występuje, gdy nie dajesz wystarczających uprawnień do folderu .git. By rozwiązać ten problem-

  1. Najpierw przejdź do katalogu roboczego.
  2. Wpisz to polecenie

    sudo chmod a + rw .git -R

Mam nadzieję, że to pomoże..!!


1

Miałem dokładnie ten sam błąd, ale w moim przypadku problem polegał na przebudowaniu Apache po aktualizacji do wersji PHP. Krótko mówiąc, zapomniałem zainstalować moduł Apache „suexec”.

Nie miało to nic wspólnego z grupą ani własnością. Dopiero po dwóch dniach zrozumiałem, że ktoś mnie zastrzelił ...


1

W moim przypadku miałem system podwójnego rozruchu (Windows 10 i Linux) z folderem projektu na dysku NTFS. Okazało się, że na innej aktualizacji system Windows 10 sam w sobie włącza „szybkie uruchomienie” w swoich ustawieniach. Po odznaczeniu go w systemie Windows zniknął „błąd: nie można otworzyć .git / FETCH_HEAD: Odmowa uprawnień” w systemie Linux.


0

Dostałem to, ponieważ miałem na swoim koncie więcej niż 1 konto użytkownika. Byłem zalogowany jako użytkownik A i byłem w katalogu dla użytkownika B. Użytkownik A nie miał uprawnień do rzeczy użytkownika B. Kiedy zdałem sobie sprawę, że nie jestem tam, gdzie myślałem, że jestem w systemie plików, ten błąd miał sens.


0

jeśli znajdziesz ten sam problem na serwerze Windows, musisz uruchomić wiersz poleceń z wystarczającą liczbą uprawnień, takich jak uprawnienia administratora.


0

dla użytkowników MacOS (jeśli High Sierra lub wyższa wersja) użyj tego:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: W systemach podwójnego rozruchu wyłącz Fast Startup dla Windows

Miałem ten problem w moim systemie Ubuntu / Windows z podwójnym uruchomieniem. Nie mogłem napisać niczego na żadnej z partycji współdzielonych z Windows (partycje NTFS).

Niedawno ponownie zainstalowałem oba programy i zapomniałem wyłączyć „Szybkie uruchamianie” w systemie Windows. Wszystko wróciło do normy po ponownym uruchomieniu w systemie Windows, wyłączeniu tej funkcji i ponownym uruchomieniu.


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.