Answers:
根据官方文档,您可以使用update-index子命令在任何跟踪的文件上设置或删除“可执行”标志。
要设置标志,请使用以下命令:
git update-index --chmod=+x path/to/file
要删除它,请使用:
git update-index --chmod=-x path/to/file
引擎盖下
虽然这看起来像常规的unix文件权限系统,但实际上不是。Git在其内部存储中为每个文件维护一个特殊的“模式”:
100644 用于常规文件100755 对于可执行文件您可以使用ls-file带有--stage选项的子命令来可视化它:
$ git ls-files --stage
100644 aee89ef43dc3b0ec6a7c6228f742377692b50484 0 .gitignore
100755 0ac339497485f7cc80d988561807906b2fd56172 0 my_executable_script.sh
默认情况下,当您将文件添加到存储库时,Git将尝试遵循其文件系统属性并相应地设置正确的文件模式。您可以通过将core.fileMode选项设置为false 来禁用此功能:
git config core.fileMode false
故障排除
如果在某个时候未设置Git文件模式,但是文件具有正确的文件系统标志,请尝试删除模式并再次设置它:
git update-index --chmod=-x path/to/file
git update-index --chmod=+x path/to/file
奖金
从Git 2.9开始,您可以暂存文件并在一个命令中设置标志:
git add --chmod=+x path/to/file