Versuchen Sie es:
git config core.fileMode false
De git-config(1) :
core.fileMode
Tells Git if the executable bit of files in the working tree
is to be honored.
Some filesystems lose the executable bit when a file that is
marked as executable is checked out, or checks out a
non-executable file with executable bit on. git-clone(1)
or git-init(1) probe the filesystem to see if it handles the
executable bit correctly and this variable is automatically
set as necessary.
A repository, however, may be on a filesystem that handles
the filemode correctly, and this variable is set to true when
created, but later may be made accessible from another
environment that loses the filemode (e.g. exporting ext4
via CIFS mount, visiting a Cygwin created repository with Git
for Windows or Eclipse). In such a case it may be necessary
to set this variable to false. See git-update-index(1).
The default is true (when core.filemode is not specified
in the config file).
El -c
Flagge kann diese Option für einmalige Befehle gesetzt werden:
git -c core.fileMode=false diff
Die Eingabe der -c core.fileMode=false
kann lästig sein, daher können Sie dieses Flag für alle Git-Repos oder nur für ein Git-Repo setzen:
# this will set your the flag for your user for all git repos (modifies `$HOME/.gitconfig`)
git config --global core.fileMode false
# this will set the flag for one git repo (modifies `$current_git_repo/.git/config`)
git config core.fileMode false
Zusätzlich, git clone
y git init
ausdrücklich festgelegt core.fileMode
a true
in der Repo-Konfiguration, wie in Git global core.fileMode false lokal beim Klonen überschrieben
Warnung
core.fileMode
ist nicht die beste Praxis und sollte vorsichtig eingesetzt werden. Diese Einstellung bezieht sich nur auf das ausführbare Bit des Modus und niemals auf die Lese-/Schreibbits. In vielen Fällen denken Sie, dass Sie diese Einstellung brauchen, weil Sie etwas getan haben wie chmod -R 777
und macht alle Ihre Dateien ausführbar. Aber in den meisten Projekten die meisten Dateien müssen und sollten aus Sicherheitsgründen nicht ausführbar sein .
Der richtige Weg, um diese Art von Situation zu lösen, ist, die Ordner- und Dateiberechtigung separat zu behandeln, etwa mit:
find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write
find . -type f -exec chmod a+rw {} \; # Make files read/write
Wenn Sie das tun, brauchen Sie nie mehr die core.fileMode
außer in sehr seltenen Fällen.
53 Stimmen
Dies ist hilfreich bei der Arbeit mit git unter Windows + Bash unter Ubuntu unter Windows
10 Stimmen
Für alle, die nur die Änderungen der Berechtigungen für einen bestimmten Aufruf von
git diff
und die daher ihre Git-Konfigurationsdateien nicht ändern wollen: Sie könnengit diff -G.
per Zed's Antwort aquí .