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

如何根据文件最后修改日期向Git添加未跟踪新文件?

按修改时间筛选暂存Git未跟踪文件的实现方案(Windows环境)

Git本身没有内置按文件系统修改时间筛选未跟踪文件执行git add的原生参数,可结合系统自带的脚本能力实现需求,以下两种方案均可直接使用,不会影响已被Git跟踪的文件状态,也会自动遵守.gitignore规则跳过被忽略的文件。

PowerShell 原生方案(无需额外安装工具)

直接在仓库根目录打开PowerShell执行以下脚本,默认筛选最近30天(1个月)内修改的未跟踪文件执行暂存:

# 获取所有符合忽略规则的未跟踪文件列表
$untrackedList = git ls-files --others --exclude-standard
foreach ($file in $untrackedList) {
    $modifyTime = (Get-Item $file).LastWriteTime
    # 筛选30天内修改的文件,如需调整时间范围修改AddDays()内的数值即可
    if ($modifyTime -gt (Get-Date).AddDays(-30)) {
        git add $file
    }
}

执行前如果需要预览待暂存的文件名单,可将脚本内的git add $file替换为Write-Host "待暂存: $file",确认列表无误后再执行实际暂存操作,避免误加不需要的文件。

Git Bash 方案(Git for Windows 自带环境)

如果你平时习惯用Git安装包自带的Bash终端,可直接在仓库根目录执行以下单行命令实现同样效果:

find . -type f -mtime -30 | git ls-files --others --exclude-standard -Z --stdin | xargs -0 git add

命令逻辑说明:

  • find . -type f -mtime -30:递归遍历当前目录下所有30天内修改过的普通文件
  • git ls-files --others --exclude-standard -Z --stdin:从传入的文件列表里过滤出未被跟踪、且不在.gitignore忽略列表内的文件
  • xargs -0 git add:将过滤后的文件列表传给git add执行暂存

通用注意事项

  • 时间阈值可按需调整:需要筛选最近N天修改的文件,就把PowerShell脚本里AddDays(-30)的30、Bash命令里-mtime -30的30改成对应数值即可
  • 所有命令默认递归处理所有子文件夹,不需要手动遍历子目录
  • 操作不会修改已被Git跟踪的文件的暂存状态,和你之前查到的仅处理已跟踪文件的方案互不影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:00:15