Versuch, Git mit Fehler zu ziehen: .git / FETCH_HEAD kann nicht geöffnet werden: Berechtigung verweigert


209

Helfen Sie mir bitte, ich versuche dies in meinem Terminal auszuführen:

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

Dann versuche ich diesen

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

Hilf mir, ich verstehe dieses Problem nicht.


Haben Sie Ihren öffentlichen Schlüssel zum Github-Konto hinzugefügt?
Madhead

3
Haben Sie eine Schreibberechtigung für das lokale Verzeichnis und die Dateien, in die Sie ziehen möchten? Auch sudohilft hier wahrscheinlich überhaupt nicht, da es Zugriff auf Ihre SSH-Schlüssel benötigt (nicht auf Roots).
Benjamin Bannier

Ich hatte dieses Problem und löste es, indem ich meinem Benutzer die Berechtigung zum Ändern und Vollzugriff für diesen Ordner (Windows) erteilte
Frank

Antworten:


193

Es scheint, dass der erste nicht funktioniert, weil Ihr Benutzer nicht über die Berechtigungen zum Ändern dieses Verzeichnisses verfügt, und der zweite, weil Ihr Root-Benutzer nicht über die richtigen SSH-Schlüssel für den Zugriff auf dieses Git-Repository verfügt.

Je nachdem, was Sie versuchen, ist es möglicherweise besser, das Repository in ein anderes Verzeichnis oder in chowndas aktuelle Verzeichnis zu klonen , um vollen Zugriff für Ihren Benutzer zu erhalten


Ich habe ein ähnliches Problem und bin mir nicht sicher, ob ich meinem www-dataBenutzer die Berechtigung zum Aktualisieren des .gitVerzeichnisses erteilen kann . Ich rufe das Shell-Skript mit PHP über http im Browser auf. Details hier
KillABug

13
Dies passiert oft, wenn Sie versehentlich vergessen, dass Sie gelaufen sind sudo suund als Root in einem Repo fungieren. Ein einfaches sudo chown -R <username> .in diesem Verzeichnis wirkt magisch!
Ray

149

Überprüfen Sie, ob Sie über genügend Berechtigungen für das verfügen .git/ Verzeichnis . Sie sollten Schreibrechte haben. Sie können sie mit dem folgenden Befehl einstellen.

Gehen Sie zu Ihrem Projektordner:

chown -R youruser:yourgroup .git/

1
Dies gibt mirchown: youruser: Invalid argument
zakdances

43
Es sollte seinchown -R youruser .git/
mischen

1
Ich musste chown .git/und seinen übergeordneten Ordner, damit es funktioniert
zadubz

Dies scheint ein sehr häufiges Problem zu sein. OK, wenn Sie mit einem anderen Benutzer arbeiten und etwas von einem anderen Benutzer haben, haben Sie Ihre Berechtigungen geändert. Es ist etwas schwierig.
René Höhle

Wenn chownnicht funktioniert, dann führen Sie auch diesen Befehl aussudo chmod 0777 -R .git/
Kiran

48

Wenn Sie der Gruppe die Berechtigung erteilen möchten,

sudo chmod g+w .git -R

hat am besten für mich funktioniert.

Für MacOS

sudo chmod -R g+w .git 

29

Dies ist ein UNIX-Berechtigungsproblem. Nicht sudozum Klonen des Repositorys verwenden. Sie haben nicht die gleichen SSH-Schlüssel wie root und sollten sowieso nicht als root arbeiten. Versuchen Sie ls -la, die Berechtigungen für die Dateien zu finden und sie mit chmod(oder sudo chown) zu reparieren. Hoffentlich hilft das.


Genau das! Ich bin auf dieses Problem sudo clonegestoßen, weil ich es tun musste, um die neue Lizenzvereinbarung von XCode zu akzeptieren. Die Antwort ist, die Vereinbarung zu akzeptieren und dann ohne Sudo zu klonen.
Barnaby


21

Die Antwort auf dieses Problem stellt sicher, dass .git / FETCH_HEAD über Schreibrechte verfügt und Sie fertig sind.

Ich hatte dieses Problem unter Windows und es wurde durch Erteilen von Schreibberechtigungen behoben.

Unter Unix kann man chmod a+rw .git/FETCH_HEADvom Projekt-Repository aus ausführen, wonach es funktionieren soll.


funktioniert nicht .git/FETCH_HEADalleine, wenn das Berechtigungsproblem aktiviert ist .git.
Cœur

17

Versuchen Sie es so,

Schritt 1: Überprüfen Sie zuerst, wer Sie sind? Es wird der aktuelle Benutzername zurückgegeben, z. B. Ubuntu

$ whoami 

Schritt 2: Legen Sie dann die Berechtigung für Ihren aktuellen Benutzer fest, in diesem Fall ubuntu by

sudo chown -R ubuntu .git/

Dies funktioniert für mich während der Ausführung der Diskursinstallation auf Amazon Lightsail Ubuntu
Jide

11

In meinem Fall hatte ich nur Lesezugriff auf die Datei .git / FETCH_HEAD. Ich musste "sudo chmod g + w .git / FETCH_HEAD" ausführen, um eine Pull-Anfrage ausführen zu können.


funktioniert nicht .git/FETCH_HEADalleine, wenn das Berechtigungsproblem aktiviert ist .git.
Cœur

Ich musste Schreibzugriff auf den Git-Ordner für die Gruppe zulassensudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, perfekte Lösung.
Rishi Kulshreshtha

9

Ich hatte das erste Problem (FETCH_HEAD-Berechtigung verweigert) unter Windows.

Ich habe es behoben, indem ich Git Bash als Administrator ausgeführt habe (Rechtsklick, als Administrator ausführen).


9

Wenn Sie sich nicht zu der Gruppe hinzugefügt haben, die Sie besitzen .git/, sollten Sie dies tun.

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

Was dies tut:

  1. findet heraus, welche Gruppe gehört, .git/und fügt Ihren Benutzer dieser Gruppe hinzu.
  2. stellt sicher, dass Gruppenmitglieder die gleichen Berechtigungen wie der Eigentümer für haben .git/.
  3. wiederholt dies für .gitignore, was Sie wahrscheinlich brauchen werden
  4. meldet Sie ab und wieder an, um die Berechtigungen für Gruppenmitgliedschaftsdateien zu aktualisieren

Wenn Sie erst kürzlich so etwas getan haben (Sie haben sich der Gruppe hinzugefügt, der Sie gehören .git/), müssen Sie sich abmelden und wieder anmelden, bevor Sie .git/FETCH_HEADwährend Ihres Aufenthalts schreiben können git pull.


7

Legen Sie die Berechtigung für Ihren aktuellen Benutzer fest, indem Sie den Befehl ausführen

$ sudo chown -R <username> .git/


6

Gehen Sie einfach in Ihren Stammordner und führen Sie diesen Befehl aus:

chmod a+rw .git/FETCH_HEAD

4

Unter Windows 7 lag dieses Problem daran, dass ich den Ordner .git ausgeblendet hatte. Die Berechtigungen waren in Ordnung, es war nur versteckt. Durch Anzeigen des Ordners wurde das Problem behoben.


Verstecktes Verzeichnis, wer hätte gedacht.
Ian Newland


3

Das hat bei mir funktioniert:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner .git
  2. Klicken Sie auf Informationen abrufen
  3. Legen Sie die Berechtigung für Ihren Benutzer fest
  4. Klicken Sie auf das Zahnradsymbol und dann auf Auf eingeschlossene Elemente anwenden

Keine Erlaubnis mehr verweigert Fehler in Git. 🎉


2

Sehen Sie sich den Eigentümer und die Gruppe des .gitVerzeichnisses mit an (gehen Sie zuerst zum übergeordneten Verzeichnis von .git) ll .git, sehen Sie sich die Gruppe und den Eigentümer des Verzeichnisses an und fügen Sie Ihren Benutzer der Gruppe des Besitzers mit hinzusudo usermod -a -G yourusername groupsofonwner , dann melden Sie sich ab => anmelden und alles funktioniert .

Also im Sommer

  1. Gehe zum übergeordneten Verzeichnis von Git

    $cd your path
    
  2. Finde den Gruppenbesitzer der .gitDirecotry

    $ll .git     
    
  3. Fügen Sie Ihren Benutzer dieser Gruppe hinzu

    $usermod -a -G yourusername ownergroupofgit
    
  4. Das Abmelden und Anmelden am System für diese Änderung wird wirksam.

  5. Geniesse es ;)


2

Ich habe dieses Problem, wenn der .git-Ordner ausgeblendet ist und alle darin enthaltenen Dateien ebenfalls ausgeblendet sind. Machen Sie nur den .git-Ordner ausgeblendet, ohne die rekursiven Dateien zu aktualisieren, und es wird funktionieren.


2

Gründe für diesen Fehler können mehrere sein, aber in meinem Fall habe ich den Zweig mit root aktualisiert. Als ich dann versuchte, ihn mit einem normalen Benutzer zu aktualisieren, gab es einen Fehler.

Probieren Sie beide Lösungen aus, die für Sie funktionieren sollten

1- sudo chmod g+w .git -R

Wenn es nicht funktioniert, versuchen Sie es bitte mit der nächsten Lösung. Hoffen Sie, dass es Ihr Problem löst

2 - rm -f .git/FETCH_HEAD

1

Ich hatte diese Meldung bei der Verwendung von Git-Erweiterungen für Windows. Mein Fix war, einfach Git-Erweiterungen zu schließen und dann wieder als Administrator zu öffnen



1

Dieses Problem tritt auf, wenn Sie dem Ordner .git nicht genügend Berechtigungen erteilen. Um dieses Problem zu lösen-

  1. Navigieren Sie zuerst zu Ihrem Arbeitsverzeichnis.
  2. Geben Sie diesen Befehl ein.

    sudo chmod a + rw .git -R

Ich hoffe es hilft..!!


1

Ich hatte genau den gleichen Fehler, aber in meinem Fall war das Problem das Ergebnis der Neuerstellung von Apache nach einem Upgrade auf die PHP-Version. Kurz gesagt, ich habe vergessen, das Apache-Modul 'suexec' zu installieren.

Es hatte nichts mit Gruppe oder Eigentum zu tun. Ich habe nur zwei Tage gebraucht, um herauszufinden, dass mich jemand erschossen hat ...


1

In meinem Fall hatte ich ein Dual-Boot-System (Windows 10 und Linux) mit Projektordner auf der NTFS-Festplatte. Es stellte sich heraus, dass bei einem anderen Update Windows 10 von selbst "Schnellstart" in seinen Einstellungen aktiviert wurde. Nachdem ich es in Windows deaktiviert habe, war der "Fehler: .git / FETCH_HEAD kann nicht geöffnet werden: Berechtigung verweigert" unter Linux verschwunden.


0

Ich habe dies erhalten, weil ich mehr als 1 Benutzerkonto auf meiner Box hatte. Ich war als Benutzer A angemeldet und befand mich in einem Verzeichnis für Benutzer B. Benutzer A hatte keine Berechtigung für die Inhalte von Benutzer B. Als ich merkte, dass ich nicht dort war, wo ich dachte, ich wäre im Dateisystem, machte dieser Fehler Sinn.


0

Wenn Sie unter Windows Server dasselbe Problem feststellen, müssen Sie die Befehlszeile mit ausreichenden Berechtigungen ausführen, z. B. mit Administratorrechten.


0

Verwenden Sie für MacOS-Benutzer (wenn High Sierra oder eine höhere Version) Folgendes:

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

-1

TL; DR: Deaktivieren Sie in Dual Boot-Systemen den Schnellstart für Windows

Ich hatte dieses Problem in meinem Dual-Boot-Ubuntu / Windows-System. Ich konnte nichts in eine der Partitionen schreiben, die für Windows freigegeben sind (NTFS-Partitionen).

Ich habe kürzlich beide neu installiert und vergessen, den "Schnellstart" in Windows zu deaktivieren . Nachdem ich in Windows neu gestartet und diese Funktion deaktiviert und neu gestartet hatte, wurde alles wieder normal.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.