Auf dem Remote-Server habe ich einen Post-Receive-Hook eingerichtet, um ein Git-Checkout in meinem Repository durchzuführen:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
Wenn ich jedoch einen Push von meinem lokalen Computer zum Git-Repository auf dem Server mache, werden die folgenden Fehlermeldungen angezeigt:
remote: error: unable to unlink old '<file>' (Permission denied)
Dies erscheint um ein Vielfaches, eine Fehlermeldung für fast jede Datei.
Ich habe jedoch eine README.txt-Datei, die ich mit git ändern kann. Hier sind die Berechtigungen:
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
Aber andere Dateien mit genau demselben Eigentümer und denselben Berechtigungen geben mir diesen Fehler.
In einem anderen lokalen Repository für eine andere Website habe ich die Dateien mit meinem lokalen Computernamen als Eigentümer. Wenn ich auf den Remote-Server pushe, respektiert dies den Remote-Server-Eigentümer der Dateien und funktioniert wie ein Zauber.
Offensichtlich scheint es sich um einen Fehler im Zusammenhang mit Berechtigungen zu handeln, aber ich kann keinen Weg finden, ihn zu beheben. Irgendwelche Vorschläge?
quelle
sudo chmod -R g+w
über die schuldigen Ordner behoben .mv
Aktionen ähneln als nur überschreiben.ls -l
Anzeige gibt den Dateityp an und bezieht sich nicht auf Berechtigungen. Die verbleibenden neun Zeichen befinden sich in drei Sätzen, die jeweils eine Berechtigungsklasse mit drei Zeichen darstellen. Der erste Satz repräsentiert die Benutzerklasse. Der zweite Satz repräsentiert die Gruppenklasse. Der dritte Satz repräsentiert die andere Klasse. Dasg+w
in chmod gibt dem Gruppensatz (demg
Parameter) die Berechtigung zum Schreiben (desw
Parameters)Dieser Befehl würde das Problem beheben. Es gibt Schreibberechtigungen für den Ordner.
quelle
Wenn Sie eine IDE verwenden, besteht das Problem höchstwahrscheinlich darin, dass die Datei von einem Prozess verwendet wurde. Als ob Ihr Kater die Datei verwenden könnte. Versuchen Sie, diesen bestimmten Prozess zu identifizieren und zu schließen. Das sollte dein Problem lösen.
quelle
Ich hatte das gleiche Problem und keine der oben genannten Lösungen funktionierte für mich. Ich habe den fehlerhaften Ordner gelöscht. Dann:
Löschte alle verbleibenden Dateien, um den Git-Status zu bereinigen, und tat dann:
Es hat endlich funktioniert.
ANMERKUNG: Wenn der Ordner beispielsweise ein öffentlicher Ordner mit Erstellungsdateien war, denken Sie daran, die Dateien neu zu erstellen
quelle
Ich denke, das Problem kann mit dem Besitz des Ordners liegen, also setzen Sie ihn auf den aktuellen Besitz des Benutzers
Die Lösung finden Sie [hier] [1]quelle
FWIW - Ich hatte ein ähnliches Problem und bin mir nicht sicher, ob dies das Problem behoben hat (über den Berechtigungs-Mod hinaus): Eclipse schließen, das den Zweig mit diesem Problem verwendet hat.
quelle
Dies ist eine alte Frage, die jedoch Mac-Benutzern helfen kann.
Wenn Sie Dateien manuell von Time Machine kopieren, anstatt sie über Time Machine wiederherzustellen, werden ACLs zu allem hinzugefügt , was Ihre Berechtigungen beeinträchtigen kann.
Der Abschnitt in diesem Artikel mit dem Titel "Beheben von Mac OS X-Dateiberechtigungen" zeigt beispielsweise, dass "jeder" über benutzerdefinierte Berechtigungen verfügt, was alles durcheinander bringt:
Sie müssen die ACLs aus diesen Verzeichnissen / Dateien entfernen. Diese Super User-Antwort geht hinein, aber hier ist der Befehl:
sudo chmod -RN .
Dann können Sie sicherstellen, dass Ihre Verzeichnisse und Dateien über die richtigen Berechtigungen verfügen. Ich benutze
750
für Verzeichnisse und644
für Dateien.quelle
Ich erhalte diesen Fehler und andere seltsame Git-Fehler, wenn ein Server ausgeführt wird (in Intellij). Wenn Sie den Server stoppen und den Befehl git erneut versuchen, wird dies häufig für mich behoben.
quelle
Hat für mich gearbeitet
quelle
Hat den Job für mich gemacht.
quelle
Einige Dateien sind schreibgeschützt, so dass selbst Git sie nicht überschreiben kann. Ändern Sie die Ordnerberechtigung, um das Schreiben des Ordnernamens sudo chmod 775 zu ermöglichen
Und dann wieder ziehen
quelle
Denken Sie auch daran, die Berechtigung des Stammverzeichnisses selbst zu überprüfen!
Du wirst vielleicht finden:
und der Fehler "Berechtigung verweigert" wird angezeigt.
quelle
Das Ziehen hat möglicherweise zu lokalen Änderungen geführt.
Fügen Sie Ihre nicht verfolgte Datei hinzu:
Änderungen verstecken.
Löschen Sie lokale Änderungen.
Mit Sudo-Erlaubnis ziehen
quelle