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.

Arthur Yakovlev
fuente
¿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

abyx
fuente
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/
René Höhle
fuente
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 
Won Jun Bae
fuente
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.

Johannes Thoma
fuente
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
24

En mi caso funciona bien después de eso:

rm -f .git/FETCH_HEAD

git branch -u
shilovk
fuente
1
También me ha funcionado con este caso particular .
P. Mergey
Para mí, también fue la solución. Gracias por esta opción de solución.
Francisco María Calisto el
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.

pg2286
fuente
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/
Siempre soleado
fuente
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.

Rayo
fuente
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).

Nicholas Westby
fuente
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.

placas
fuente
7

Establezca el permiso para su usuario actual ejecutando el comando

$ sudo chown -R <username> .git/

Shivam Kohli
fuente
6

Simplemente vaya a su carpeta raíz y ejecute este comando:

chmod a+rw .git/FETCH_HEAD
Suvajit Chakraborty
fuente
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ó.

jdf
fuente
Directorio oculto, que habría golpeado.
Ian Newland
4

Esto resolverá todos los permisos en la carpeta

sudo chown -R $(whoami) ./
Pablo Papalardo
fuente
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. 🎉

eonista
fuente
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 ;)

Yuseferi
fuente
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á.

Oleg Dmitriev
fuente
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
Shahbaz
fuente
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

Rob Bowman
fuente
1

En mi caso,

sudo chmod ug + wx .git -R

Este comando funciona.

narwanimonish
fuente
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..!!

Nakshtra Pradhan
fuente
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ó ...

Vince
fuente
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ó.

ysvet
fuente
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.

thebiggestlebowski
fuente
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.

aaron
fuente
0

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

sudo chown -R $(whoami) $(brew --prefix)/*
rony36
fuente
-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.

numan947
fuente
-1

En mi caso trabajo que: acabo de escribir sudoantes del comando:

sudo npm run deploy
Андрей Пахомов
fuente