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

在开始之前,我应该说我已经看过这篇文章和这篇文章,但由于某些原因,那里提供的解决方案并不适合我。 我的存储库位于~/sources因此每条命令都从该路径运行。 这就是我所做的:

将filemode更改为false:

$ git config --global core.filemode false

检查全局配置:

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

重新初始化存储库:

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

检查需要添加的内容|提交:

$ git status

我从存储库中获取包含所有文件的列表。

我在用:

$ git --version
git version 2.9.3

更新:为两个不同的文件添加了git diff

$ 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输出:

$ 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

我在这里错过了什么?


本地配置覆盖全局配置设置

问题中的差异输出表明本地git配置已将filemode设置为true。 这可能是预期的行为,因为为repo创建的默认配置定义了这一点:

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

更改filemode的全局配置不会影响到这一点,所以实际上git config --global core.filemode false不会执行任何操作,因为它始终在本地覆盖。

因此,要更改此回购的文件模式,请更改本地配置:

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

鉴于这个问题/答案,它有可能工作,但它不适合我。


你可以用这个来验证本地设置是什么:git config --local --list

...并像这样设置一个本地值:

git config --local core.filemode false

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

上一篇: Git is not ignoring file mode changes (chmod), why?

下一篇: What does it mean when Git diff shows mode changes?