Wenn ich diese Befehle aus meinem App-Ordner ausführe:
git add .
git commit -m "commit details"
git push
Ich bekomme den Fehler:
mycompaq@ubuntu:~/myapp$ git add .
error: insufficient permission for adding an object to repository database .git/objects
error: app/views/reviews/update.js.erb: failed to insert into database
error: unable to index file app/views/reviews/update.js.erb
fatal: updating files failed
mycompaq@ubuntu:~/myapp$
Ich habe diesen Befehl versucht:
chown -R user:user /project/directory
Aber zu sehen, wie ich einstieg ganze Menge Ärger In erster Linie durch Ausführen von Befehlen, bei denen ich mir nicht sicher war, möchte ich wissen, ob dies die richtige Lösung ist.
Wie sollte die genaue Syntax lauten, wenn der Benutzer „Christophe“ ist und der Ordner, in dem meine Rails-App gespeichert ist, „myapp“ heißt. Ich meine, sollte es sein
chown -R user:christophe /myapp/app/views/reviews/update.js.erb
Sie haben versehentlich eine Datei oder einen Ordner mit erhöhten Berechtigungen an git übergeben, und jetzt kann git diese Objekte nicht mehr ändern. Es ist sicher, den Besitz aller Dateien unter rekursiv zu erzwingen .git/objects/
an Ihren aktuellen Benutzer, um das Problem zu beheben.
-
Stellen Sie sicher, dass Sie sich in dem Repository befinden, in dem Sie den Fehler erhalten.
-
Holen Sie sich Ihren Benutzernamen, indem Sie ihn eingeben
whoami
-
Geben Sie diesen Befehl ein
sudo chown -R your_user_name .git/*
-
Endlich
git add .
chown [ -f ] [ -h ] [ -R ] Owner [ :Group ] { File ... | Directory ... }
Von dem Manpage
Der Befehl chown ändert den Eigentümer der durch den Parameter File angegebenen Datei auf den durch den Parameter Owner angegebenen Benutzer. Der Wert des Owner-Parameters kann eine Benutzer-ID oder ein Anmeldename aus der Datei /etc/passwd sein. Optional kann auch eine Gruppe angegeben werden. Der Wert des Group-Parameters kann eine Gruppen-ID oder ein Gruppenname aus der Datei /etc/group sein.
Über die Option -R
-R
Steigt rekursiv in Verzeichnisse ab und ändert den Besitz für jede Datei. Wenn ein symbolischer Link angetroffen wird und der Link auf ein Verzeichnis zeigt, wird der Besitz dieses Verzeichnisses geändert, aber das Verzeichnis wird nicht weiter durchquert.
So
chown -R user:christophe /myapp/app/views/reviews/update.js.erb
Würde den Besitzer wechseln update.js.erb
Datei an den Benutzer user
in der Gruppe christophe
was wahrscheinlich nicht das ist, was Sie wollen.
In Ihrem Fall ändern Sie den Eigentümer des Repos auf sich selbst, dh
sudo chown -R christophe /path/to/your/local/repo
sollte genügen.
Wenn Sie Ihren Benutzernamen nicht kennen, können Sie ihn mit dem herausfinden whoami
Befehl.
Sie können Zugriff auf alle Dateien im Ordner .git/ gewähren. Führen Sie einfach den folgenden Befehl aus:
sudo chmod a+xrw .git/*