Git is not ignoring file mode changes (chmod), why?

Before start I should say I already looked this post and this one as well but for some reason the solutions provided there aren't working for me. My repository is under ~/sources so every command was run from that path. This is what I have done:

Change the filemode to false:

$ git config --global core.filemode false

Check global configuration:

$ git config --list
...
core.filemode=false
core.repositoryformatversion=0
core.bare=false
core.logallrefupdates=true
...

Reinitialize the repository:

$ git init
Reinitialized existing Git repository in /home/rperez/sources/.git/

Check what needs to be added|committed:

$ git status

And I get a list having all the files from the repository.

I am using:

$ git --version
git version 2.9.3

UPDATE: added git diff for two different files

$ git status
...
    modified:   testing/test-valid-swasset-update.php
...
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    library/mpdf60/ttfontdata/dejavusanscondensedI.GDEFdata.php
...

git diff output from the files above:

$ git diff testing/test-valid-swasset-update.php
diff --git a/testing/test-valid-swasset-update.php b/testing/test-valid-swasset-update.php
old mode 100755
new mode 100644

What I am missing here?


Local config overrides global config settings

The diff output in the question indicates that the local git config has filemode set to true. This is probably expected behavior since the default config created for a repo defines this:

-> git init
Initialized empty Git repository in /tmp/foo/.git/
-> cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true

Changing the global config for filemode does not affect this, and so in fact git config --global core.filemode false doesn't do anything because this is always overridden locally.

Therefore, to change the filemode for this repo, change the local config:

$ git config core.filemode false
$ git config core.filemode
false

Given this question/answer there's a possibility it is supposed to work, although it didn't for me.


You can verify what the local setting is with this: git config --local --list

...and set a local value like this:

git config --local core.filemode false

链接地址: http://www.djcxy.com/p/30032.html

上一篇: [python]:被super()困惑

下一篇: Git不会忽略文件模式更改(chmod),为什么?