Github-Fehler: Unzureichende Berechtigung zum Hinzufügen eines Objekts zur Repository-Datenbank

Lesezeit: 3 Minuten

Benutzeravatar von CHarris
Charris

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

Dwains Benutzer-Avatar
Dwain

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.

  1. Stellen Sie sicher, dass Sie sich in dem Repository befinden, in dem Sie den Fehler erhalten.

  2. Holen Sie sich Ihren Benutzernamen, indem Sie ihn eingeben

    whoami

  3. Geben Sie diesen Befehl ein

    sudo chown -R your_user_name .git/*

  4. Endlich

    git add .

Benutzeravatar von Gabriele Petronella
Gabriele Petronella

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 christophewas 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.

  • Ich habe ‘chown -R christophe /myapp’ und auch ‘Christophe1’ (mein Github-Benutzername) ausprobiert, aber ich bekomme immer wieder ‘chown: invalid user: ‘Christophe1’ Wahrscheinlich eine dumme Frage, aber wie kann ich herausfinden, was ‘user’ sollte sein ? Es ist schließlich meine Maschine, und mein Name ist Christophe!

    – CHarris

    19. August 2013 um 23:08 Uhr

  • Cool, nett. Ich werde das zur Kenntnis nehmen. Aber wenn ich „chown -R christophecompaq myapp“ ausführe, erhalte ich eine Menge „Operation nicht erlaubt“-Meldungen. Und dann git add . gibt mir den ursprünglichen Fehler. Danke für deine Beschreibung von chown und ‘R though.

    – CHarris

    19. August 2013 um 23:27 Uhr

  • sudo chown -R christophecompaq myapp

    – Gabriele Petronella

    19. August 2013 um 23:32 Uhr

  • Hey, schön! Ich habe Ihre Antwort bearbeitet, um einige dieser Kommentare aufzunehmen, wenn Sie nichts dagegen haben – um es anderen einfacher zu machen.

    – CHarris

    19. August 2013 um 23:45 Uhr

  • Ich habe deinen Vorschlag integriert, froh, dass du ihn auf jeden Fall gelöst hast.

    – Gabriele Petronella

    19. August 2013 um 23:50 Uhr

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/*

1440020cookie-checkGithub-Fehler: Unzureichende Berechtigung zum Hinzufügen eines Objekts zur Repository-Datenbank

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy