¿Cómo elimino archivos que dicen "modo antiguo 100755 modo nuevo 100644" de cambios no preparados en Git?

Resuelto concept47 asked hace 15 años • 19 respuestas

Por alguna razón, cuando inicialmente extraje del repositorio un proyecto mío de Git, obtuve un montón de archivos en mi copia de trabajo a los que no se les realizaron cambios perceptibles, pero siguen apareciendo en mi unstaged changesárea.

Estoy usando Git Gui en Windows XP y cuando voy, miro el archivo para ver qué ha cambiado. Todo lo que veo es:

old mode 100755  
new mode 100644  

Alguien sabe que significa esto?

¿Cómo puedo sacar estos archivos de mi lista de cambios no preparados? (Es muy molesto tener que revisar cientos de archivos, solo para seleccionar los archivos que edité recientemente y quiero confirmar).

concept47 avatar Aug 11 '09 05:08 concept47
Aceptado

Eso me parece modos de permisos de archivos Unix ( 755= rwxr-xr-x, 644= rw-r--r--): el modo antiguo incluía el indicador +x (ejecutable), el nuevo modo no.

Las respuestas a este problema de msysgit sugieren configurar core.filemode en falso para solucionar el problema:

git config core.filemode false
Amber avatar Aug 10 '2009 22:08 Amber

Configurar core.filemodeen falso funciona, pero asegúrese de que las configuraciones en ~/.gitconfigno sean anuladas por las de .git/config.

Para saber con seguridad de dónde core.filemodeproviene la configuración, ejecute el siguiente comando (funciona en cualquier sistema operativo) desde la carpeta raíz del repositorio (o cualquier carpeta debajo de la raíz):

git config --show-origin --show-scope --get-all core.filemode

NovelX avatar Jun 04 '2010 07:06 NovelX

Esto suele suceder cuando el repositorio se clona entre máquinas Windows y Linux/Unix.

Simplemente dile a git que ignore el cambio de modo de archivo. A continuación se muestran varias formas de hacerlo:

  1. Configuración SÓLO para el repositorio actual:

     git config core.filemode false
    
  2. Configurar globalmente:

     git config --global core.filemode false
    
  3. Agregue ~/.gitconfig:

     [core]
          filemode = false
    

Simplemente seleccione uno de ellos.

K. Symbol avatar May 31 '2019 03:05 K. Symbol

Me encontré con este problema al copiar un repositorio de git con archivos de trabajo desde un disco duro antiguo un par de veces. El problema surge del hecho de que el propietario y los permisos cambiaron del disco/máquina antiguo al nuevo. En pocas palabras, ejecute los siguientes comandos para arreglar las cosas ( gracias a esta respuesta de superusuario ):

sudo chmod -R -x . # remove the executable bit from all files

El comando anterior en realidad resolverá las diferencias que informó git diff, pero revocará su capacidad para enumerar los directorios, por lo que ls ./falla con ls: .: Permission denied. Para arreglar eso:

sudo chmod -R +X . # add the executable bit only for directories

La mala noticia es que si tiene archivos que desea mantener ejecutables, como .shscripts, deberá revertirlos. Puedes hacerlo con el siguiente comando para cada archivo:

chmod +x ./build.sh # where build.sh is the file you want to make executable again
Scott Willeke avatar Jul 01 '2017 22:07 Scott Willeke