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.

Arthur Yakovlev
quelle
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

Abyx
quelle
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/
René Höhle
quelle
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 
Jun Bae gewonnen
quelle
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.

Johannes Thoma
quelle
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
24

In meinem Fall funktioniert es gut danach:

rm -f .git/FETCH_HEAD

git branch -u
shilovk
quelle
1
Auch in diesem speziellen Fall hat es bei mir funktioniert .
P. Mergey
Für mich war es auch die Lösung. Vielen Dank für diese Lösungsoption.
Francisco Maria Calisto
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.

pg2286
quelle
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/
Immer sonnig
quelle
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.

Strahl
quelle
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).

Nicholas Westby
quelle
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.

Kochfelder
quelle
7

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

$ sudo chown -R <username> .git/

Shivam Kohli
quelle
6

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

chmod a+rw .git/FETCH_HEAD
Suvajit Chakraborty
quelle
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.

jdf
quelle
Verstecktes Verzeichnis, wer hätte gedacht.
Ian Newland
4

Dadurch werden alle Berechtigungen im Ordner aufgelöst

sudo chown -R $(whoami) ./
Pablo Papalardo
quelle
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. 🎉

Eonist
quelle
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 ;)

Yuseferi
quelle
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.

Oleg Dmitriev
quelle
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
Shahbaz
quelle
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

Rob Bowman
quelle
1

In meinem Fall,

sudo chmod ug + wx .git -R

Dieser Befehl funktioniert.

narwanimonisch
quelle
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..!!

Nakshtra Pradhan
quelle
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 ...

Vince
quelle
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.

ysvet
quelle
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.

thebiggestlebowski
quelle
0

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

Aaron
quelle
0

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

sudo chown -R $(whoami) $(brew --prefix)/*
rony36
quelle
-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.

numan947
quelle