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

如何在Git的main分支中检查文件夹或其子文件夹自上次提交后是否被修改

实现Git文件夹修改检查的方法

当然有办法实现这个需求啦!下面我给你分几种常见场景,附上具体的命令和脚本示例,你可以根据自己的实际情况选用:

场景1:检查当前工作区/暂存区与main分支最新提交的差异

如果你想确认本地未提交的修改(包括工作区和暂存区)是否改动了目标文件夹,可以用git diff命令配合--quiet参数来做快速判断:

检查单个文件夹

# 替换成你的目标文件夹路径,比如 ./src/utils
if git diff --quiet main HEAD -- <目标文件夹路径>; then
    echo "这个文件夹在main分支上次提交后没有修改"
else
    echo "该文件夹有修改!开始执行后续操作..."
    # 在这里添加你的后续操作命令,比如打包、部署等
fi

--quiet参数会让git diff只返回状态码:无差异返回0,有差异返回非0,非常适合脚本里做判断。

检查所有文件夹

如果要批量检查仓库里的所有文件夹,去掉<目标文件夹路径>即可:

if ! git diff --quiet main HEAD; then
    echo "仓库中有文件夹/文件在main上次提交后被修改,执行后续操作..."
    # 后续操作
fi

场景2:检查本地分支提交中,是否有在main之后修改目标文件夹的记录

如果你的修改已经提交到本地分支,想确认这些提交里有没有改动目标文件夹,可以用git log来筛选:

# 替换成目标文件夹路径
if [ -n "$(git log main..HEAD -- <目标文件夹路径>)" ]; then
    echo "该文件夹在main分支上次提交后有提交记录,执行后续操作..."
else
    echo "没有针对该文件夹的提交修改"
fi

main..HEAD表示只查看当前分支比main分支多出来的提交,加上文件夹路径后,只会显示修改过该文件夹的提交。

场景3:对比远程main分支的最新版本

如果需要先拉取远程main的最新提交,再对比本地的修改,可以这样做:

# 先拉取远程main分支的最新代码(不会影响本地工作区)
git fetch origin main

# 对比本地当前分支和远程main的差异
if ! git diff --quiet origin/main HEAD -- <目标文件夹路径>; then
    echo "本地文件夹与远程main最新版本有差异,执行后续操作..."
    # 后续操作
fi

补充说明

  • 如果你用的是Windows环境,上面的bash脚本可以改成PowerShell语法,比如:
    if (-not (git diff --quiet main HEAD -- <目标文件夹路径>)) {
        Write-Host "文件夹有修改,执行后续操作"
        # 你的后续操作
    }
    
  • 注意文件夹路径的写法,尽量用相对路径,确保Git能正确识别目标目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 23:02:34