Error al extraer de git: permiso insuficiente para agregar un objeto a la base de datos del repositorio .git / objects

112

Tengo un error de git: "permiso insuficiente para agregar un objeto a la base de datos del repositorio .git / objects" cada vez que hago "git pull origin desarrollar".

    remote: Counting objects: 70, done.
    remote: Compressing objects: 100% (7/7), done.
    remote: Total 42 (delta 35), reused 42 (delta 35)
    error: insufficient permission for adding an object to repository database     .git/objects

    fatal: failed to write object
    fatal: unpack-objects failed
unnati patil
fuente
1
Pregunta obvia: ¿ Tiene derechos de acceso a los archivos en el disco?
Lasse V. Karlsen
17
Verifique los permisos del .git/objectsarchivo. Parece que puede haber usado por error sudoen algún momento en el pasado y haberle dado la propiedad en rootlugar de a usted mismo.
Chris Hayes
Tengo el mismo problema @ChrisHayes ¿Pero qué archivo .git / objects? ¿Dónde está ese archivo / directorio?
pedroremedios
1
@pedroremedios .gites un directorio que existe en la base de cada repositorio de git.
Chris Hayes

Respuestas:

255

Suponiendo que @ChrisHayes tiene razón sobre un sudo accidental, esto debería solucionarlo. Desde dentro de su repositorio:

sudo chown -R $USER:$USER "$(git rev-parse --show-toplevel)/.git"

Actualización : para aquellos de ustedes que reciben el illegal group nameerror, intenten esto en su lugar:

sudo chown -R $(id -u):$(id -g) "$(git rev-parse --show-toplevel)/.git"
dwurf
fuente
7
¿Qué git rev-parse --show-toplevelhacer? Pude solucionar el problema simplemente usando chown -R user:useren el directorio de nivel superior de mi repositorio.
Matt K
9
@MattK esto obtendrá el directorio de nivel superior de su repositorio, por lo que el comando funcionará independientemente de en qué parte de su repositorio se encuentre actualmente. Si ya está en la raíz, puede ejecutarsudo chown -R $USER:$USER .git
dwurf
7
Recibo: illegal group name
Ian
1
Estaba usando el nombre de usuario incorrecto. El comando funcionó. Gracias.
Ian
1
también me pasó después de un sudo accidental antes. cambiar el propietario / grupo lo solucionó
Asped
10

Vaya al directorio raíz del proyecto y ejecute los siguientes comandos para solucionar este problema,

cd .git/objects
sudo chown -R yourname:yourgroup *
Priyank Patel
fuente
2

El mío fue un error estúpido ... se establecieron el nombre de usuario y el grupo correctos, pero www-data era la cuenta para acceder a él. El directorio era propiedad de vaindil: www-data, pero los permisos eran 755, por lo que www-data no podía escribir en él. Arreglado con:

$ sudo chmod -R 775 /path/to/repo
vaindil
fuente
1

NO ES UNA BUENA PRÁCTICA (Solo una alternativa)

Estoy usando Ubuntu y enfrenté el mismo problema. Para resolverlo, simplemente cambié de usuario a root y no veo más errores.

$su
password

Luego,

$git pull origin master

Forma recomendada: CAMBIAR EL PERMISO DEL DIRECTORIO

Nabin
fuente
4
Esto funcionará (como lo hará sudo), pero es una buena práctica evitar ejecutar comandos como root siempre que sea posible.
dwurf
@dwurf Gracias por el comentario. Fue solo una alternativa a la respuesta anterior. :)
Nabin
1
NO ES UNA SOLUCIÓN también: no desea usar su repositorio como sudo.
Wax Cage
1
@WaxCage Sí, pero ¿ves el texto grande en negrita ya ahí? :)
Nabin