从Windows向Git添加Bash脚本:自动设置可执行权限位
从Windows提交Bash脚本至Git时自动设置可执行权限的方法
当然可以自动设置,不用等Linux构建失败后再补救,以下是几种可行方案:
使用项目级
.gitattributes文件
在项目根目录创建或编辑.gitattributes文件,添加一行规则:*.sh text eol=lf executable
这会让Git自动将所有.sh文件标记为文本文件(转换换行符为LF,适配Linux环境),同时自动设置可执行权限位。提交时Git会直接应用这个配置,无需手动执行命令。全局配置(适配所有Git项目)
如果希望所有本地Git项目的.sh文件都自动应用权限设置,先运行命令指定全局属性文件:git config --global core.attributesfile ~/.gitattributes
然后在用户主目录下创建.gitattributes文件,同样添加*.sh text eol=lf executable这一行即可。预提交钩子自动处理
在项目的.git/hooks目录下创建pre-commit文件(无后缀),写入以下内容:
#!/bin/sh for file in $(git diff --cached --name-only --diff-filter=ACM | grep '\.sh$'); do git update-index --chmod=+x "$file" done
给这个钩子文件本身设置可执行权限(在Git Bash中运行chmod +x .git/hooks/pre-commit),之后每次提交前,Git会自动为暂存区中的.sh文件添加可执行权限。
需要说明的是:Windows文件系统本身不支持Unix风格的可执行权限位,Git默认不会自动为这类文件标记权限,所以需要通过上述方式明确告诉Git要为.sh文件设置可执行属性。
内容的提问来源于stack exchange,提问作者theMayer
相关产品推荐
相关产品推荐

