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

如何用Git post-merge钩子检测pull后指定目录的变更?

实现Git Pull后检测特定目录变更的钩子

你猜的没错,post-merge钩子就是正确的选择——因为git pull本质是git fetch + git merge,merge操作完成后post-merge钩子会自动触发。以下是具体实现步骤:

步骤1:创建post-merge钩子文件

进入你的Git仓库根目录,打开.git/hooks文件夹,创建一个名为post-merge的文件(不要加任何后缀)。

步骤2:编写检测脚本

将以下bash脚本写入post-merge文件:

#!/bin/bash

# 定义需要检测的目标目录
TARGET_DIR="/public"

# 获取本次合并中目标目录的变更文件列表
CHANGED_FILES=$(git diff --name-only HEAD@{1} HEAD -- "$TARGET_DIR")

# 如果存在变更,打印提示信息
if [ -n "$CHANGED_FILES" ]; then
    echo "⚠️ 提示:$TARGET_DIR 目录在本次操作后有更新,变更文件如下:"
    echo "$CHANGED_FILES"
fi

步骤3:赋予脚本执行权限

在终端中执行命令,给钩子文件加上可执行权限:

chmod +x .git/hooks/post-merge

关键说明

  • HEAD@{1}代表合并前的仓库HEAD状态,不管是快进合并还是三方合并,都能准确对比出本次merge带来的变更
  • 用--name-only参数只会输出变更的文件名,如果你需要更详细的变更差异,可以换成--stat(显示变更统计)或者直接去掉该参数(显示完整diff内容)
  • 这个钩子不仅在git pull时触发,手动执行git merge时也会生效——如果只想针对git pull场景,可以额外添加判断,但多数情况下没必要,因为merge导致的目录变更同样值得关注

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:52:44