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

如何通过Husky与Shell脚本强制开发者同步修改相似文件?

配置Husky pre-commit钩子强制同步修改关联文件

步骤1:初始化Husky(未配置过的话)

先安装Husky依赖:

npm install husky --save-dev

启用Git hooks:

npx husky install

把Husky启动命令加入package.json,确保后续依赖安装后自动启用:

npm set-script prepare "husky install"

步骤2:创建pre-commit钩子

生成钩子文件并指定执行脚本:

npx husky add .husky/pre-commit "bash .husky/check-sync-files.sh"

步骤3:编写同步检查脚本

在.husky目录下新建check-sync-files.sh,写入以下内容:

#!/bin/bash

# 定义需要同步修改的文件对,格式:"文件路径1 文件路径2"
SYNC_PAIRS=(
  "src/utils/fileA.js src/utils/fileB.js"
  "src/components/CompX.vue src/components/CompY.vue"
)

# 获取暂存区的所有修改文件
STAGED_FILES=$(git diff --name-only HEAD --)

# 遍历检查每一对文件
for pair in "${SYNC_PAIRS[@]}"; do
  FILE1=$(echo "$pair" | cut -d' ' -f1)
  FILE2=$(echo "$pair" | cut -d' ' -f2)

  # 检查:修改了FILE1但没改FILE2
  if echo "$STAGED_FILES" | grep -q "^$FILE1$" && ! echo "$STAGED_FILES" | grep -q "^$FILE2$"; then
    echo "❌ 错误:修改了 $FILE1,但未同步修改关联文件 $FILE2"
    exit 1
  fi

  # 检查:修改了FILE2但没改FILE1
  if echo "$STAGED_FILES" | grep -q "^$FILE2$" && ! echo "$STAGED_FILES" | grep -q "^$FILE1$"; then
    echo "❌ 错误:修改了 $FILE2,但未同步修改关联文件 $FILE1"
    exit 1
  fi
done

# 检查通过,允许提交
echo "✅ 同步文件检查通过"
exit 0

步骤4:给脚本添加执行权限

chmod +x .husky/check-sync-files.sh

测试验证

修改其中一个关联文件但不修改另一个,尝试提交:

git add src/utils/fileA.js
git commit -m "测试不同步修改"

此时钩子会抛出错误并阻止提交,直到你把对应的关联文件也修改并暂存。


内容的提问来源于stack exchange,提问作者Laxman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:40:32