How to Configure Git to Ignore File Mode Changes
There are cases when working on the local development you need to change permissions on various files. Git will think that you made changes on the file if it was being tracked. Let's see how to ignore these changes.
Ignoring file mode changes
Run the following within the repository to ignore the changes:
git config core.fileMode false
Attaching the --global flag makes it a default for the logged user:
git config --global core.fileMode false
Caution
The core.fileMode is not recommended practice. It covers only the executable bit of mode not the read/write bits. There are cases when you use this setting just because you did chmod -R 777 to make your files executable. But you should remember that most files shouldn’t be executable for many security reasons.
The appropriate way to solve this kind of problem is to manage the folder and file permission separately by running the following:
find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write
find . -type f -exec chmod a+rw {} \; # Make files read/write
Configuration Levels
The git config command accepts arguments to define on which configuration level to operate. When searching for a configuration value, Git prioritizes the following orders:
--local
The git config command writes to a local level by default if no configuration option is passed. The repository of the .git directory has a file (config) which stores the local configuration values.
--global
The application of this level includes the operating system user. Global configuration values are found in a file (.gitconfig) located in a user's home directory.
--system
This configuration includes all users on an operating system and all repositories. The System-level configuration file is placed in the git config file of the system root path.