web-dev-qa-db-ja.com

Gitがファイルモードの変更(chmod)を無視していないのはなぜですか?

始める前に、私はすでに this postthis one も調べたと言いますが、何らかの理由で、そこに提供されているソリューションが機能しません。私のリポジトリは~/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

UPDATE:2つの異なるファイルの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

ここで何が欠けていますか?

15
ReynierPM

ローカル構成はグローバル構成設定をオーバーライドします

質問のdiff出力は、localgit configで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

与えられた この質問/答え は、私にとっては機能しませんでしたが、機能すると思われる可能性があります。

17
AD7six

これでローカル設定が何であるかを確認できます:git config --local --list

...次のようにローカル値を設定します。

git config --local core.filemode false

0