I ititialized git repository and later realized that git indexes file mode such as 777 or 644, and when file mode changes git shows that mode changing and "wants" file to be commited just because its mode was changed. How can I remove the file mode "records" of git index (history) of such file while save it "real" changing history - history of changing its contents?


You can achieve this partially by setting core.fileMode to false:

git config core.fileMode false

This will cause the executable bit (and only that one) to be ignored.

Quoting the git-config documentation:

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).

Whether that’s a good idea is another debate...


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.