如何用Bash实现自动为待提交.sh文件加执行权限的Git pre-commit hook
Bash版自动设置Shell脚本执行权限的pre-commit hook
完全可以实现和Python版功能完全一致的Bash脚本,代码更简洁,适配pre-commit hook的运行环境:
#!/bin/bash # 遍历所有.sh后缀的Git跟踪文件,检查索引权限位 git ls-files -s -- '*.sh' | while read -r mode _ _ filename; do # 提取权限位后三位(忽略前缀的100标识位) file_perm="${mode: -3}" # 权限为644的文件自动添加执行权限到Git索引 if [ "$file_perm" = "644" ]; then git update-index --chmod=+x "$filename" fi done
该脚本仅修改Git索引中的权限标记,不会改动Windows本地文件系统的属性,完全适配NTFS等不支持UNIX权限位的文件系统场景。
使用步骤
- 将上述代码复制到项目的
.git/hooks/pre-commit文件中(如果文件不存在直接新建即可) - 在Git Bash/WSL等终端中执行命令给hook文件添加执行权限:
chmod +x .git/hooks/pre-commit - 配置完成后,后续提交所有
.sh后缀的文件时,都会自动补全执行权限位设置,推送到UNIX环境运行时不会再出现无执行权限的报错
内容的提问来源于stack exchange,提问作者XDS
相关产品推荐
相关产品推荐

