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

Rey*_*rPM 14 git ignore

开始之前我应该说我已经看了这个帖子这个很好,但由于某些原因,解决方案,只要不是为我工作.我的存储库位于,~/sources因此每个命令都从该路径运行.这就是我所做的:

将filemode更改为false:

$ git config --global core.filemode false
Run Code Online (Sandbox Code Playgroud)

检查全局配置:

$ git config --list
...
core.filemode=false
core.repositoryformatversion=0
core.bare=false
core.logallrefupdates=true
...
Run Code Online (Sandbox Code Playgroud)

重新初始化存储库:

$ git init
Reinitialized existing Git repository in /home/rperez/sources/.git/
Run Code Online (Sandbox Code Playgroud)

检查需要添加的内容:

$ git status
Run Code Online (Sandbox Code Playgroud)

我得到一个包含存储库中所有文件的列表.

我在用:

$ git --version
git version 2.9.3
Run Code Online (Sandbox Code Playgroud)

更新:为两个不同的文件添加了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
...
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

AD7*_*six 19

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

问题中的diff输出表明本地 git config已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
Run Code Online (Sandbox Code Playgroud)

更改全局配置filemode不会影响这一点,因此实际上git config --global core.filemode false没有做任何事情,因为它总是在本地被覆盖.

因此,要更改此repo的filemode,请更改本地配置:

$ git config core.filemode false
$ git config core.filemode
false
Run Code Online (Sandbox Code Playgroud)

鉴于这个问题/答案,它有可能发挥作用,尽管它不适合我.