# pre-push: 严格检查,阻塞有问题的代码推送到远程 # 类型检查(全项目,因为类型错误可能跨文件传播) npx tsc --noEmit # ESLint 严格检查(仅检查本次推送的变更文件,不阻塞不相关的旧代码) # 新分支无 upstream 时,回退到与 origin/main 对比 BASE=$(git rev-parse --verify @{upstream} 2>/dev/null && echo "@{upstream}" || echo "origin/main") CHANGED_FILES=$(git diff --name-only --diff-filter=d "$BASE"...HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx' '*.mjs') if [ -n "$CHANGED_FILES" ]; then echo "$CHANGED_FILES" | xargs npx eslint --max-warnings=0 fi