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


Por alguna razón, cuando inicialmente hice una extracción del repositorio para un proyecto mío git, Tengo un montón de archivos en mi copia de trabajo que no tienen cambios discernibles en ellos, pero siguen apareciendo en mi unstaged changes zona.

Estoy usando Git Gui en Windows XP, y cuando voy a ver 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 obtener estos archivos fuera de mi lista de cambios sin grabar? (Es muy molesto tener que ir a través de cientos de archivos, solo para seleccionar los archivos que he editado recientemente y quiero comprometer).


542
2017-08-10 22:30


origen


Respuestas:


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

Las respuestas de este número de msysgit sugiere configurar core.filemode en false para eliminar el problema:

git config core.filemode false

935
2017-08-10 22:34



Configurar core.filemode en false funciona. Pero se aseguraría de que las configuraciones en ~ / .gitconfig no sean anuladas por aquellos en .git / config.


76
2018-06-04 07:03



Me he encontrado con este problema al copiar un repositorio git con archivos de trabajo de un disco duro viejo un par de veces. El problema surge del hecho de que el propietario y los permisos cambiaron de la unidad / máquina anterior a la nueva. En resumen, ejecute los siguientes comandos para enderezar las cosas (gracias a esta respuesta de superusuario)

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

El antiguo comando resolverá las diferencias que git diff informó, pero revocará su capacidad para listar 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 algún archivo que quiera mantener ejecutable, como .sh scripts, deberás revertirlos. Puede hacerlo con el siguiente comando para cada archivo:

chmod +x ./build.sh # where build.sh is the file you want to make executable again

6
2017-07-01 22:47



Tu podrías intentar git reset --hard HEAD para restablecer el repositorio al estado predeterminado esperado.


5
2017-08-11 03:38



Parece que ha cambiado algunos permisos del directorio. Hice los siguientes pasos para restaurarlo.

$  git diff > backup-diff.txt                ### in case you have some other code changes 

$  git checkout .

4
2018-05-06 10:47



Esto sucede cuando tira y todos los archivos fueron ejecutables en el repositorio remoto. Hacerlos ejecutables de nuevo volverá a poner todo en orden.

chmod +x <yourfile> //For one file
chmod +x folder/* // For files in a folder

Es posible que deba hacer:

chmod -x <file> // Removes execute bit

en cambio, para archivos que no se establecieron como ejecutables y que se cambiaron debido a la operación anterior. Hay una mejor manera de hacerlo, pero esto es solo una solución muy rápida y sucia.


1
2018-04-10 13:10



Solo tenía el archivo problemático con los permisos modificados. Para deshacerlo individualmente, lo eliminé manualmente con rm <file> y luego hizo un checkout para sacar una copia nueva.

Afortunadamente aún no lo había organizado.

Si tuviera podría haber corrido git reset -- <file> antes de correr git checkout -- <file>


0
2017-11-21 21:30