首页 > 解决方案 > 在预提交挂钩上检测文件模式更改

问题描述

我想知道是否有人更改了某些脚本的文件模式并显示警告以确保它是故意的,而不是一个愚蠢的错误。

目前我尝试在我的预提交钩子上做这样的事情:

mode_changed=$(git diff --summary | grep "mode")
#echo "mode change is $mode_changed"
if ! [[ -z "$mode_changed" ]]; then
  echo "Warning Files Modes Changed"
fi

如果文件没有暂存以进行提交,则此方法有效,但是一旦我调用 git commit -a,则先前的脚本不再起作用,变量 mode_changed 中的返回值始终为空。还有另一种方法吗?

标签: gitgithooks

解决方案


要查看阶段性差异,请使用

git diff --summary --staged

(或--cached,这是 的同义词--staged)。

您还可以稍微简化您的条件:

if [ -n "$mode_changed" ]; then

推荐阅读