Gemäß der offiziellen Dokumentation können Sie das Flag "ausführbar" für jede verfolgte Datei mit dem update-indexUnterbefehl setzen oder entfernen .
Verwenden Sie den folgenden Befehl, um das Flag zu setzen:
git update-index --chmod=+x path/to/file
Verwenden Sie zum Entfernen:
git update-index --chmod=-x path/to/file
Unter der Haube
Dies sieht zwar aus wie das reguläre Unix-Dateiberechtigungssystem, ist es aber nicht. Git unterhält für jede Datei in seinem internen Speicher einen speziellen "Modus":
100644 für reguläre Dateien
100755 für ausführbare
Sie können es mit dem ls-fileUnterbefehl visualisieren , mit der --stageOption:
$ git ls-files --stage
100644 aee89ef43dc3b0ec6a7c6228f742377692b50484 0 .gitignore
100755 0ac339497485f7cc80d988561807906b2fd56172 0 my_executable_script.sh
Wenn Sie eine Datei zu einem Repository hinzufügen, versucht Git standardmäßig, die Dateisystemattribute zu berücksichtigen und den richtigen Dateimodus entsprechend festzulegen. Sie können dies deaktivieren, indem Sie die core.fileModeOption auf false setzen:
git config core.fileMode false
Fehlerbehebung
Wenn der Git-Dateimodus irgendwann nicht mehr festgelegt ist, die Datei jedoch das richtige Dateisystem-Flag aufweist, versuchen Sie, den Modus zu entfernen und erneut festzulegen:
git update-index --chmod=-x path/to/file
git update-index --chmod=+x path/to/file
Bonus
Ab Git 2.9 können Sie eine Datei bereitstellen UND das Flag in einem Befehl setzen:
git add --chmod=+x path/to/file