2012-01-12 11 views
20

Moví un montón de mis repositorios git a otro sistema operativo copiándolo en un disco duro externo. Y ahora cuando lo hago git diff informa que todos los modos de los archivos han cambiado.cambios en el modo de informe de git diff después de mover el repositorio

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 acerca de los permisos de archivos, lo que supone que voy a hacer al respecto?

¿Confirma los cambios de modo? ¿Cambiar el modo de todos los archivos no ejecutables? git reset?

+0

qué sistema operativo desde y qué sistema operativo? –

+0

Xubuntu a Crunchbang Linux – fent

Respuesta

11

Probablemente su disco duro externo tenía un sistema de archivos diferente que no respetaba los permisos del archivo original. Solo los corregiría a mano antes de comprometerme.

Por ejemplo, FAT32, que se usa comúnmente en memorias USB, no admite permisos de ejecución. Cuando copia un archivo de un sistema de archivos FAT32 a un sistema de archivos normal tipo Unix, normalmente establece el permiso de ejecución para todos los archivos, ya que eso 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, haga un archivo tar (opcionalmente comprimido) y luego descomprímalo en el otro extremo. El formato tar mantiene un registro de los bits de permiso de Unix.

Tenga en cuenta que git en sí no hace un seguimiento de más de ejecutable vs no ejecutable. Si los cambios de modo son la única diferencia y no desea volver a copiar todo, puede convertir el resultado de git diff en un script en un chmod -x en todos los archivos afectados.

+0

SI ese es el caso, simplemente los volveré a transferir de otra forma. Estoy pensando en comprimir todo en un archivo. De ninguna manera estoy corrigiendo todos esos archivos a mano. – fent

+0

O reformatee su disco externo con un sistema de archivos más inteligente. ¿A qué FS va desde/a y cómo se formatea el disco externo? –

+1

desde/hasta: ext4, externo: ntfs – fent

39

Puede aplicar este ajuste de

git config core.filemode false

causando git hacer caso omiso de las diferencias en el modo de archivos.

Esta solución se encontró en la respuesta de @ kan a another question

+1

@ DeaDEnD esto debería haber sido marcado como respuesta correcta IMO, ¿vale la pena mencionarlo en la Q? –

Cuestiones relacionadas