首页 > 解决方案 > GIT 预提交钩子,它在修改/添加的文件中搜索非 UTF-8 编码(如果找到则拒绝提交)

问题描述

我正在使用适用于 Windows 的 Git(和 TortoiseGit)。

我的目标是防止在修改/添加中至少包含一个非 UTF-8 文件的提交。

所以任何帮助表示赞赏。

标签: windowsbashgitgit-bashpre-commit-hook

解决方案


所以答案是(感谢phd感谢 torek的有用笔记):

    git diff --name-only --staged --diff-filter d | xargs -I {} bash -c 
 "iconv -f utf-8 -t utf-16 {} &>/dev/null || { echo {} - is non-UTF8!; exit 1; }"

此代码遍历所有在提交中更改的文件(除了删除 - 即添加、修改、复制和重命名)并检查是否有任何非 UTF8 文件。列出所有找到的文件并中止提交。


推荐阅读