Estoy recibiendo un error inusual al intentar hacer un "git push" en mi repositorio de GitHub:
Contando objetos: 8, hecho. Compresión Delta utilizando 2 hilos. Comprimir objetos: 100% (4/4), hecho. Escribir objetos: 100% (5/5), 1.37 KiB, hecho. Total 5 (delta 2), reutilizado 0 (delta 0) error: permiso insuficiente para agregar un objeto a la base de datos del repositorio ./objects fatal: no se pudo escribir el objeto error: desempaquetar objetos salidos con el código de error 128 error: descomprimir falló: desempaquetar objetos salida anormal A [email protected]: bixo / bixo.git ! [rechazado remotamente] maestro -> maestro (n / a (error del desempacador)) error: no se pudieron enviar algunas referencias a '[email protected]: bixo / bixo.git'
- Después de un clon limpio de GitHub, puedo editar / agregar / confirmar / enviar un archivo modificado.
- Si luego repito esto por segunda vez me sale el error anterior.
- Puedo empujar a otros repositorios de GitHub muy bien.
- He revisado los permisos de archivo / directorio de mi lado, y parecen estar bien.
- Estoy ejecutando git 1.6.2.3 en Mac OS X 10.5.8
El repositorio anterior fue la fuente de mi diversión para una pregunta anterior de Stack Overflow ( SO 1904860 ), por lo que tal vez el repositorio de GitHub se corrompió. El único problema similar que encontré a través de la búsqueda fue un problema de desempaquetado reportado en github. ¿Alguien más se ha encontrado con este problema antes, especialmente cuando no usa GitHub?
foo
ygit
; ambos pueden leer/opt/git/<repo>
, pero sologit
pueden escribirle.git
predeterminado para el usuario actual si no se proporciona ninguno.git/config
, lo cual olvidé. Ninguna de las elaboradas respuestas a continuación fueron necesarias.Respuestas:
Cuando vea este error fuera de github, aquí hay un remedio.
Obtuve esto de: http://mapopa.blogspot.com/2009/10/git-insufficient-permission-for-adding.html
Después de esto, el demonio git debería usar los permisos de archivo de grupo al escribir en .git / objects.
fuente
sudo chmod -R g+ws *
?git config core.sharedRepository true
.Por lo general, este problema es causado por permisos de usuario y grupo incorrectos en el sistema de archivos de sus servidores Git. El repositorio de git debe ser propiedad del usuario y también de su grupo.
Ejemplo:
Si su usuario se llama "git", su grupo "gitgroup" y la ubicación del repositorio de Git es: [email protected]: ruta / a / repo.git
entonces haz un:
Esto solucionó el error de permiso de git insuficiente para mí.
fuente
fuente
chmod 777
nunca es una buena solución, solo una solución insegura. Pruebe la respuesta de @ Syvex en su lugar (con setgid)Esto me sucedió cuando lo intenté
git pull
. Algunos análisis mostraron que alguien se había comprometido con la raíz en el pasado, creando así algunos objetos con propiedad de raíz.git/objects
.Entonces corrí
y eso mostró la
root
propiedad de algunos objetos (directorios) como este:Entonces corrí
¡Y funcionó!
Estaba reemplazando usuario con mi usuario real, por supuesto.
fuente
Nada de lo anterior funcionó para mí. Un par de horas más tarde encontré la razón del problema: utilicé una URL de repositorio del tipo
Lamentablemente, almacené una sesión de masilla con el nombre
example.com
que se configuró para iniciar sesión como usuariomyOtherUser
.Entonces, aunque pensé que git se conecta al host
example.com
con el usuario 'git', Git / TortoiseGit se ha conectado a la sesión de masillaexample.com
que usa el usuariomyOtherUser
. Esto lleva al mismo..insufficient permission..
error exacto (porque ambos usuarios están en grupos diferentes).Solución: cambie el nombre de la sesión de masilla
example.com
a[email protected]
fuente
chmod debe ser conocido, por lo que la línea correcta es:
fuente
Por extraño que parezca, tuve este problema en un clon del repositorio que tenía, pero no en otro que tenía. Además de volver a clonar el repositorio (que un compañero de trabajo hizo para solucionar este problema con éxito), logré hacer un "restablecimiento de git" al compromiso que tenía antes de que comenzaran las fallas. Luego volví a confirmar los cambios y pude presionar con éxito después de eso. Entonces, a pesar de todas las indicaciones, hubo un problema en el servidor, en este caso aparentemente era indicativo de alguna rareza en el repositorio local.
fuente
Recibía este error porque cada vez que un usuario empuja algún contenido, el grupo del archivo cambia al usuario. Y luego, si algún otro usuario intentó ingresar al repositorio, causó un error de permiso y el envío fue rechazado. Por lo tanto, es necesario pedirle a su administrador de sistemas que cambie la configuración del repositorio para que ningún usuario pueda cambiar el grupo de cualquier archivo en el repositorio.
Para evitar este problema, asegúrese de que cuando inicialice su repositorio git, use el comando "git init --shared = group".
fuente
Si aún recibe este error más tarde después de configurar los permisos, es posible que deba modificar su máscara de creación. Descubrimos que nuestras nuevas confirmaciones (carpetas debajo de los objetos) todavía se estaban creando sin permiso de escritura grupal, por lo tanto, solo la persona que las comprometió podía ingresar al repositorio.
Lo arreglamos configurando la máscara de usuario de los usuarios de SSH en 002 con un grupo apropiado compartido por todos los usuarios.
p.ej
donde el 0 central permite la escritura grupal por defecto.
fuente
Después de agregar algunas cosas ... compromételas y, después de todo, ¡presiónalo! ¡¡EXPLOSIÓN!! Comience todos los problemas ... Como debe notar, hay algunas diferencias en la forma en que se definieron los proyectos nuevos y existentes. Si alguna otra persona intenta agregar / confirmar / enviar los mismos archivos o contenido (git mantiene ambos como los mismos objetos), nos enfrentaremos al siguiente error:
Para resolver este problema, debe tener en cuenta el sistema de permisos del sistema operativo, ya que en este caso está restringido. Para comprender mejor el problema, continúe y verifique la carpeta de su objeto git (.git / objects). Probablemente verá algo así:
* Tenga en cuenta que esos permisos de archivo se otorgaron solo para sus usuarios, nadie nunca podrá cambiarlo ... *
RESOLVIENDO EL PROBLEMA
Si tiene permiso de superusuario, puede avanzar y cambiar todos los permisos usted mismo utilizando el paso dos, en cualquier otro caso deberá preguntar a todos los usuarios con objetos creados con sus usuarios, utilice el siguiente comando para saber quiénes son :
Ahora usted y todos los usuarios propietarios del archivo tendrán que cambiar el permiso de esos archivos, haciendo lo siguiente:
Después de eso, deberá agregar una nueva propiedad que sea equivalente a --shared = group done para el nuevo repositorio, de acuerdo con la documentación, esto hace que el repositorio sea editable en grupo, ejecute:
https://coderwall.com/p/8b3ksg
fuente
Intenta hacer lo siguiente:
Ir a su servidor
Luego vaya a su copia de trabajo (repositorio local) y vuelva a empaquetarla
git repack master
Funciona perfectamente para mi.
fuente
puedes usar esto
fuente
El directorio es tu repositorio de git.
Entonces hazlo:
Verá cambios sobre los compromisos de otros.
fuente
fuente
OK, resulta que fue un problema de permisos en GitHub que sucedió durante la bifurcación de emi / bixo a bixo / bixo. Una vez que Tekkub los arregló, comenzó a funcionar nuevamente.
fuente
Dado que el error trata de los permisos en la carpeta de objetos, hice un chown directamente en la carpeta de objetos y funcionó para mí.
fuente
Esto funciona:
fuente
chmod
cambia los permisos del archivo y necesita modos como argumentos, no usuarios y grupos. Eschmod -R ${some_octal_num} bla
o bienchown -R ${some_user}:${some_group} bla
Supongo que muchos como yo terminan en foros como este cuando se produce el problema git como se describe anteriormente. Sin embargo, hay tantas causas que pueden conducir al problema que solo quiero compartir lo que causó mis problemas para que otros aprendan como ya aprendí desde arriba.
Tengo mis repositorios en un NAS de Linux de sitecom (nunca compre NAS de Sitecom, por favor). Tengo un repositorio aquí que está clonado en muchas computadoras, pero que de repente se me negó presionar. Recientemente instalé un complemento para que mi NAS pudiera funcionar como un servidor squeezebox.
Este servidor busca medios para compartir. Lo que no sabía era que, posible debido a un error, el servidor cambia la configuración de usuario y grupo para exprimir: usuario para todos los archivos que busca. Y eso es TODOS los archivos. Alterando así los derechos que tenía que presionar.
El servidor se fue y se restablecieron los ajustes de derechos adecuados y todo funciona perfectamente.
solía
Donde myuser y mygroup fuera de curso deben reemplazarse con la configuración adecuada para su sistema. prueba git: git o gituser: gituser o alguna otra cosa que te guste.
fuente
Verifique el repositorio: $ git remote -v
Tenga en cuenta que aquí hay una subcadena 'git @', indica a git que se autentique como nombre de usuario 'git' en el servidor remoto. Si omite esta línea, git se autenticará con un nombre de usuario diferente, por lo tanto, se producirá este error.
fuente
En mi caso, no había autenticación unificada (por ejemplo, dentro del dominio + servicio similar a AD) entre mi máquina y el servidor virtual git. Por lo tanto, los usuarios y el grupo de git son locales para el servidor virtual. En mi caso, mi usuario remoto (que uso para iniciar sesión en el servidor remoto) simplemente no se agregó al grupo git remoto.
Después de eso, verifique los permisos como se describe en las publicaciones anteriores ...
fuente
¿Has probado sudo git push -u origin --all ? A veces es lo único que necesita para evitar este problema. Le pide la contraseña del sistema de administración, la que puede iniciar sesión en su máquina, y eso es lo que necesita presionar, o confirmar, si es el caso.
fuente