Git没有忽略文件模式的更改(chmod),为什么?

19

在开始之前,我应该说我已经查看了这篇帖子这篇帖子,但出于某些原因,那里提供的解决方案对我不起作用。我的代码库在~/sources下,因此每个命令都是从该路径运行的。我所做的如下:

将文件模式更改为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差异

$ 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

我在这里缺少什么?

2个回答

25

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

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

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

鉴于这个问题/回答,有可能它应该可以工作,尽管对我来说并没有。


3

您可以使用以下命令验证本地设置:

git config --local --list

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

git config --local core.filemode false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接