Moví un montón de mis repositorios de git a otro sistema operativo copiándolos en un disco duro externo. Y ahora cuando lo hago git diff
informa que todos los modos de archivos han cambiado.
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/.npmignore b/.npmignore
old mode 100644
new mode 100755
diff --git a/.travis.yml b/.travis.yml
old mode 100644
new mode 100755
diff --git a/LICENSE b/LICENSE
old mode 100644
new mode 100755
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
Realmente no sé mucho sobre permisos de archivos, ¿qué se supone que debo hacer al respecto?
¿Confirmar los cambios de modo? ¿Volver a cambiar el modo para todos los archivos no ejecutables? reiniciar?
ross attrill
Puede aplicar esta configuración
git config core.filemode false
haciendo que git ignore las diferencias en el modo de archivo.
Esta solución se encontró en la respuesta de @kan a otra pregunta
-
@DeaDEnD esto debería haberse marcado como la respuesta correcta en mi opinión, ¿quizás valga la pena mencionarlo en la Q?
-Nitsan Wakart
24 de julio de 2015 a las 7:06
-
¡Muchas gracias! Ninguna de las otras sugerencias como cambiar el formato de final de línea de los archivos, configurar crlf config, restablecer el hardware, nada funcionó. Esto funcionó a las mil maravillas.
– Nagabhushan SN
28 de agosto de 2021 a las 3:40
carl norum
Probablemente su disco duro externo tenía un sistema de archivos diferente que no respetaba los permisos del archivo original. Simplemente los corregiría a mano antes de comprometerme.
Por ejemplo, FAT32, que se usa comúnmente en unidades de memoria USB, no admite permisos de ejecución. Cuando copia un archivo de un sistema de archivos FAT32 a un sistema de archivos similar a Unix, generalmente establece el permiso de ejecución para todos los archivos, ya que es menos dañino que desactivarlo para todos los archivos.
Si desea conservar ese tipo de información, no copie los archivos directamente en la unidad; en su lugar, cree un archivo tar (opcionalmente comprimido) y luego descomprímalo en el otro extremo. El formato tar realiza un seguimiento de los bits de permiso de Unix.
Tenga en cuenta que git en sí mismo no realiza un seguimiento de más de ejecutable frente a no ejecutable. Si los cambios de modo son la única diferencia y no desea volver a copiar todo, puede convertir la salida de git diff
en un guión hace un chmod -x
en todos los archivos afectados.
-
SI ese es el caso, simplemente los volveré a transferir de otra manera. Estoy pensando en comprimir todo en un archivo. De ninguna manera voy a corregir todos esos archivos a mano.
– cercado
12 de enero de 2012 a las 22:31
-
O reformatee su disco externo con un sistema de archivos más inteligente. ¿De qué FS va/hacia y cuál es el formato del disco externo?
–Carl Norum
12 de enero de 2012 a las 22:32
-
desde/hasta: ext4, externo: ntfs
– cercado
12 de enero de 2012 a las 23:11
-
Si todos los archivos son +x, puede ejecutar
git diff --name-only | xargs chmod -x
para eliminar el bit de ejecución de todos los archivos modificados. Un enfoque más cuidadoso y completo sería usar los comandos presentados en esta respuesta, que manejan específicamente los cambios de modo (tanto +x como -x)– johnny
21/09/2015 a las 18:55
¿De qué sistema operativo y de qué sistema operativo?
–Michael Durrant
12 de enero de 2012 a las 22:19
@fent: ¿podría revisar la respuesta aceptada y observar los votos a favor y la simplicidad de la segunda respuesta?
–Ross Attrill
29 de agosto de 2021 a las 4:40
las dos respuestas son diferentes. aunque el segundo es más simple, implica desactivar el seguimiento de los modos de archivo, lo que podría no ser aplicable a todos los repositorios.
– cercado
8 sep 2021 a las 0:30