webentwicklung-frage-antwort-db.com.de

Git ignoriert Dateimodusänderungen (chmod) nicht, warum?

Vor dem Start sollte ich sagen, ich habe bereits diesen Beitrag und diesen gesehen, aber aus irgendeinem Grund funktionieren die Lösungen dort nicht für mich. Mein Repository befindet sich unter ~/sources, daher wurde jeder Befehl von diesem Pfad aus ausgeführt. Das habe ich getan:

Ändern Sie den Dateimodus in false:

$ git config --global core.filemode false

Überprüfen Sie die globale Konfiguration:

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

Initialisieren Sie das Repository erneut:

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

Prüfen Sie, was hinzugefügt werden muss |

$ git status

Und ich bekomme eine Liste mit allen Dateien aus dem Repository. 

Ich benutze:

$ git --version
git version 2.9.3

UPDATE: git diff für zwei verschiedene Dateien hinzugefügt

$ 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 Ausgabe aus den Dateien oben:

$ 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

Was fehlt mir hier?

12
ReynierPM

Die lokale Konfiguration überschreibt die globalen Konfigurationseinstellungen

Die diff-Ausgabe in der Frage gibt an, dass für local git config filemode auf true gesetzt ist. Dies ist wahrscheinlich ein erwartetes Verhalten, da die für ein Repo erstellte Standardkonfiguration Folgendes definiert:

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

Das Ändern der globalen Konfiguration für filemode wirkt sich nicht auf dies aus, und git config --global core.filemode false macht also nichts, da dies immer lokal überschrieben wird.

Um den Dateimodus für dieses Repo zu ändern, ändern Sie die lokale Konfiguration:

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

Bei dieser Frage/Antwort gibt es eine Möglichkeit, dass es funktionieren soll, obwohl es für mich nicht war.

17
AD7six

Sie können die lokale Einstellung mit der folgenden Einstellung überprüfen:

... und einen lokalen Wert wie folgt einstellen:

git config --local core.filemode false

0