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


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

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

old mode 100755  
new mode 100644  

¿Alguien sabe lo que esto significa?

¿Cómo puedo sacar estos archivos de mi lista de cambios no escalonados? (Muy molesto tener que ir a través de 100 de archivos, solo para seleccionar los archivos que he editado recientemente y quiero confirmar).

 559
Author: Lemmings19, 2009-08-11

7 answers

Eso se parece a los modos de permisos de archivos unix para mí(755=rwxr-xr-x, 644=rw-r--r--) - el modo antiguo incluía la bandera +x (ejecutable), el nuevo modo no.

Este problema de msysgit respuestas sugiere establecer core.modo de archivo a false para deshacerse del problema:

git config core.filemode false
 970
Author: Amber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-12 12:17:45

Configuración del núcleo.el modo de archivo a false funciona. Pero te asegurarías de la configuración en~/.gitconfig no son anulados por aquellos en .git / config.

 78
Author: NovelX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-04 07:03:22

He encontrado este problema al copiar un repositorio git con archivos de trabajo de un disco duro antiguo un par de veces. El problema se debe al hecho de que el propietario y los permisos cambiaron de la unidad/máquina antigua 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 comando anterior en realidad resolverá las diferencias que git diff informó, pero revocará su capacidad para listar el 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 scripts .sh, deberá 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
 7
Author: Scott Willeke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-01 22:47:32

Usted podría intentar git reset HEAD cabeza dura para restablecer el repositorio al estado predeterminado esperado.

 5
Author: Doppelganger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-11 03:38:11

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
Author: Vikram S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-06 10:47:13

Esto sucede cuando se extrae y todos los archivos son ejecutables en el repositorio remoto. Hacer que sean ejecutables de nuevo hará que todo vuelva a la normalidad.

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

Es posible que tenga que hacer:

chmod -x <file> // Removes execute bit

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

 1
Author: IskandarG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-10 13:10:22

Solo tenía un archivo problemático con los permisos cambiados. Para devolverlo individualmente, simplemente lo eliminé manualmente con rm <file> y luego hice un checkout para obtener una copia nueva.

Afortunadamente no lo había montado todavía.

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

 0
Author: kEnobus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-21 21:30:51