Intentando git pull con error: no se puede abrir .git / FETCH_HEAD: Permiso denegado


209

Ayúdame por favor, estoy tratando de ejecutar esto en mi terminal:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Entonces pruebo este

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Ayúdame, no entiendo este problema.


¿Has agregado tu clave pública a la cuenta de github?
madhead

3
¿Tiene permiso de escritura para el directorio local y los archivos donde intenta hacer pull? Además, probablemente sudono ayude aquí en absoluto, ya que necesita acceso a sus claves ssh (no a las de la raíz).
Benjamin Bannier el

Tuve este problema y lo resolví dando a mi usuario permisos de modificación y acceso completo a esa carpeta (Windows)
Frank

Respuestas:


193

Parece que el primero no funciona porque su usuario no tiene los permisos para cambiar ese directorio, y el segundo porque su usuario raíz no tiene las claves SSH correctas para acceder a ese repositorio git.

Dependiendo de lo que intente hacer, puede ser mejor clonar el repositorio en un directorio diferente, o tal vez chownel directorio actual para tener acceso completo para su usuario


Estoy enfrentando un problema similar y no estoy seguro si puedo darle a mi www-datausuario el permiso para actualizar el .gitdirectorio. Estoy llamando al script de shell usando php sobre http en el navegador. Detalles aquí
KillABug

13
Esto sucede a menudo cuando accidentalmente olvidas que has corrido sudo suy actúas como root en un repositorio. ¡Un simple sudo chown -R <username> .en ese directorio funciona mágico!
Ray

149

Compruebe si tiene suficientes permisos en el .git/directorio. Deberías tener permisos de escritura. Puede configurarlos con el siguiente comando.

Ve a la carpeta de tu proyecto:

chown -R youruser:yourgroup .git/

1
Esto me dachown: youruser: Invalid argument
zakdances

43
Debería serchown -R youruser .git/
mezclar el

1
Tuve que hacerlo chown .git/y su carpeta principal para que funcione
zadubz

Esto parece un problema muy común ... ok, si trabajas con un usuario diferente y algo de otro usuario has cambiado tus permisos, es un poco complicado.
René Höhle

Si chownno funciona, también ejecute este comandosudo chmod 0777 -R .git/
Kiran

49

Si quieres dar permiso al grupo,

sudo chmod g+w .git -R

funcionó mejor para mí

Para MacOS

sudo chmod -R g+w .git 

29

Este es un problema de permiso de UNIX. No lo use sudopara clonar el repositorio. No tiene las mismas claves ssh que root y no debería funcionar como root de todos modos. Intente ls -laencontrar los permisos en los archivos y use chmod(o sudo chown) para corregirlos. Espero que ayude.


Exactamente esto! Encontré este problema porque tenía que hacerlo sudo clonepara aceptar el nuevo acuerdo de licencia de XCode. La respuesta es aceptar el acuerdo, luego clonar sin sudo.
Barnaby


21

La respuesta a este problema es asegurarse de que .git / FETCH_HEAD tenga privilegios de escritura y que todo estará listo.

Tuve este problema en Windows y se resolvió otorgando permisos de escritura.

En Unix se puede ejecutar chmod a+rw .git/FETCH_HEADdesde el repositorio del proyecto y luego debería funcionar.


no funciona .git/FETCH_HEADsolo si el problema de permiso está activado .git.
Cœur

17

Intenta así,

Paso 1: Primero verifica quién eres devolverá el nombre de usuario actual, por ejemplo, ubuntu

$ whoami 

Paso 2: Luego configura el permiso para tu usuario actual, en ese caso, ubuntu por

sudo chown -R ubuntu .git/

esto funciona para mí mientras se ejecuta la instalación del discurso en Amazon Lightsail ubuntu
Jide

11

En mi caso, solo tenía acceso de lectura al archivo .git / FETCH_HEAD. Tuve que hacer "sudo chmod g + w .git / FETCH_HEAD" para poder hacer una solicitud de extracción.


no funciona .git/FETCH_HEADsolo si el problema de permiso está activado .git.
Cœur

Tuve que permitir el acceso de escritura a la carpeta git para el gruposudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, Solución perfecta.
Rishi Kulshreshtha

9

Estaba teniendo el primer problema (permiso FETCH_HEAD denegado) en Windows.

Lo arreglé ejecutando Git Bash como administrador (clic derecho, ejecutar como administrador).


9

Si no se ha agregado al grupo que posee .git/, entonces debería hacerlo.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

Lo que esto hace:

  1. descubre qué grupo posee .git/y agrega su usuario a ese grupo.
  2. se asegura de que los miembros del grupo tengan los mismos permisos que el propietario .git/.
  3. repite esto para .gitignorelo que probablemente necesitarás
  4. cierra la sesión y vuelve a iniciarla para actualizar los permisos del archivo de membresía de grupo

Si recientemente hiciste algo como esto (te agregaste al grupo propietario .git/), entonces debes cerrar sesión y volver a iniciarla antes de que puedas escribir .git/FETCH_HEADdurante tu git pull.


7

Establezca el permiso para su usuario actual ejecutando el comando

$ sudo chown -R <username> .git/



4

Ejecutando Windows 7, cuando tuve este problema fue porque había ocultado la carpeta .git. Los permisos estaban bien, solo estaba oculto. Mostrar la carpeta lo resolvió.


Directorio oculto, que habría golpeado.
Ian Newland


3

Esto funcionó para mí:

  1. Haga clic derecho en la carpeta .git
  2. haga clic en obtener información
  3. establecer permiso para su usuario
  4. haga clic en el icono de Cog y haga clic en aplicar a los elementos adjuntos

No más permisos denegados errores en git. 🎉


2

Mire el propietario y el grupo del .gitdirectorio con (primero vaya al directorio padre de .git) ll .git, mire el grupo y el propietario del directorio, agregue su usuario al grupo del propietario con sudo usermod -a -G yourusername groupsofonwner, luego cierre la sesión => inicie sesión y todo funciona .

Así que en verano

  1. ir al directorio padre de git

    $cd your path
    
  2. encontrar el dueño del grupo del .gitdirecotry

    $ll .git     
    
  3. agrega tu usuario a ese grupo

    $usermod -a -G yourusername ownergroupofgit
    
  4. Cerrar sesión e iniciar sesión en el sistema para que este cambio surta efecto.

  5. Disfrútala ;)


2

Tengo ese problema cuando la carpeta .git está oculta y todos los archivos también están ocultos. Haga que la carpeta .git esté oculta sin la actualización recursiva de archivos y funcionará.


2

Las razones de este error pueden ser múltiples, pero en mi caso actualicé la rama con root y luego, cuando intenté actualizarlo con un usuario normal, me dio un error.

pruebe ambas soluciones, una debería funcionar para usted

1- sudo chmod g+w .git -R

Si no funciona, intente la siguiente solución, espero que resuelva su problema

2 - rm -f .git/FETCH_HEAD

1

Recibí este mensaje al usar extensiones git para windows. Mi solución fue simplemente cerrar las extensiones de git y luego volver a abrirlas como administrador



1

Este problema surge cuando no otorga permisos suficientes a la carpeta .git. Para resolver este problema-

  1. Primero navegue a su directorio de trabajo.
  2. Ingrese este comando

    sudo chmod a + rw .git -R

Espero eso ayude..!!


1

Tuve exactamente el mismo error, pero en mi caso, el problema fue el resultado de haber reconstruido Apache después de una actualización a la versión de PHP. En pocas palabras, olvidé instalar el módulo Apache 'suexec'.

No tenía nada que ver con el grupo o la propiedad. Eso solo me tomó dos días para darme cuenta, alguien me disparó ...


1

En mi caso, tenía un sistema de arranque dual (Windows 10 y Linux) con la carpeta del proyecto en el disco NTFS. Resultó que en otra actualización, Windows 10 habilitó por sí mismo "inicio rápido" en su configuración. Después de desmarcarlo en Windows, el "error: no se puede abrir .git / FETCH_HEAD: Permiso denegado" en Linux desapareció.


0

Obtuve esto porque tenía más de 1 cuenta de usuario en mi caja. Estaba conectado como usuario A y estaba en un directorio para el usuario B. El usuario A no tenía permiso para las cosas del usuario B. Una vez que me di cuenta de que no estaba donde pensaba que estaba en el sistema de archivos, este error tuvo sentido.


0

Si encuentra el mismo problema en el servidor de Windows, debe ejecutar la línea de comando con suficiente permiso, como el permiso de administrador.


0

para usuarios de MacOS (si High Sierra o una versión superior) use esto:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: en los sistemas de arranque dual, desactive el inicio rápido para Windows

Estaba teniendo este problema en mi sistema Ubuntu / Windows de arranque dual. No pude escribir nada en ninguna de las particiones que se comparten con Windows (particiones NTFS).

Recientemente reinstalé ambos y olvidé activar el "Inicio rápido" en Windows. Todo volvió a la normalidad después de reiniciar en Windows y apagar esa característica y reiniciar de nuevo.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.