You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:09:02