Git y los permisos de los archivos, aka chmod

Al ir a continuar el trabajo en un tema de WordPress hice un

git status

para ver como tenía sincronizado el trabajo con el repositorio local y vi que tenía modificados unos cuantos archivos que no recordaba haberlos tocado últimamente. Por ejemplo, el archivo de la licencia, gpl-2.0.txt

Al hacer un

git diff gpl-2.0.txt

para ver los cambios realizados desde el último commit en el archivo gpl-2.0.txt, el resultado era el siguiente

diff ––git a/gpl-2.0.txt b/gpl-2.0.txt
old mode 100644
new mode 100755

Si os fijáis, lo que hay es un cambio en los permisos del archivo, cambiados al ejecutar un

sudo chmod 775 * -R

Para evitar estos problemas y que git ignore los cambios en los permisos de los archivos, simplemente hay que ejecutar:

git config ––global core.filemode false

Si este comando no te funciona, prueba a añadir el parámetro ––add:

git config ––add ––global core.filemode false

Recuerda que el parámetro ––global funciona a nivel de usuario, por lo que este parámetro afectará a todos tus repositorios locales. Si ejecutamos

cat ~/.gitconfig

podemos ver que aparece la configuración en ese archivo

[core]
filemode = false

En la documentación de Git podéis ver la descripción de este parámetro de configuración

core.fileMode
If false, the executable bit differences between the index and the working tree are ignored; useful on broken filesystems like FAT. See git-update-index(1).
The default is true, except git-clone(1) or git-init(1) will probe and set core.fileMode false if appropriate when the repository is created.

 

Published
Categorized as Git Tagged