Essayez :
git config core.fileMode false
Desde git-config(1) :
core.fileMode
Tells Git if the executable bit of files in the working tree
is to be honored.
Some filesystems lose the executable bit when a file that is
marked as executable is checked out, or checks out a
non-executable file with executable bit on. git-clone(1)
or git-init(1) probe the filesystem to see if it handles the
executable bit correctly and this variable is automatically
set as necessary.
A repository, however, may be on a filesystem that handles
the filemode correctly, and this variable is set to true when
created, but later may be made accessible from another
environment that loses the filemode (e.g. exporting ext4
via CIFS mount, visiting a Cygwin created repository with Git
for Windows or Eclipse). In such a case it may be necessary
to set this variable to false. See git-update-index(1).
The default is true (when core.filemode is not specified
in the config file).
El -c
peut être utilisé pour définir cette option pour les commandes ponctuelles :
git -c core.fileMode=false diff
Taper le -c core.fileMode=false
peut être gênant et vous pouvez donc définir ce drapeau pour tous les dépôts git ou juste pour un seul dépôt git :
# this will set your the flag for your user for all git repos (modifies `$HOME/.gitconfig`)
git config --global core.fileMode false
# this will set the flag for one git repo (modifies `$current_git_repo/.git/config`)
git config core.fileMode false
En outre, git clone
y git init
explicitement fixé core.fileMode
a true
dans la configuration du repo comme indiqué dans Git global core.fileMode false surchargé localement sur le clone
Avertissement
core.fileMode
n'est pas la meilleure pratique et doit être utilisée avec précaution. Ce paramètre ne couvre que le bit exécutable du mode et jamais les bits de lecture/écriture. Dans de nombreux cas, vous pensez avoir besoin de ce paramètre parce que vous avez fait quelque chose comme chmod -R 777
en rendant tous vos fichiers exécutables. Mais dans la plupart des projets la plupart des fichiers n'ont pas besoin et ne devraient pas être exécutables pour des raisons de sécurité .
La bonne façon de résoudre ce genre de situation est de gérer séparément les droits d'accès aux dossiers et aux fichiers, avec quelque chose du genre :
find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write
find . -type f -exec chmod a+rw {} \; # Make files read/write
Si vous faites cela, vous n'aurez jamais besoin d'utiliser core.fileMode
sauf dans de très rares cas.