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

如何在Git中获取指定目录下携带提交日期的文件列表并支持排序?

获取指定目录下带提交日期的文件列表及排序方案

基础查询命令

方案1:包含所有历史提交文件(含已删除)

适合需要追溯该目录下所有历史文件的场景:

git log --pretty=format:"%ci %h" --name-only -- "C:\WORKDIR\REPOS\some_repo\some_folder" | grep -v "^$" | awk 'NF==3 {date=$0; next} {print date, $0}' | sort -u

输出格式示例:2024-05-20 14:30:00 +0800 a1b2c3d C:\WORKDIR\REPOS\some_repo\some_folder/test.txt

方案2:仅展示当前存在的文件

适合只看现有文件最新提交日期的场景,结果更精准:

git ls-files "C:\WORKDIR\REPOS\some_repo\some_folder" | xargs -I {} git log -1 --pretty=format:"%ci {}" -- {}

排序方案

按提交日期排序

ISO格式的日期支持直接自然排序:

# 升序(最早提交的文件在前)
git ls-files "C:\WORKDIR\REPOS\some_repo\some_folder" | xargs -I {} git log -1 --pretty=format:"%ci {}" -- {} | sort

# 降序(最新提交的文件在前)
git ls-files "C:\WORKDIR\REPOS\some_repo\some_folder" | xargs -I {} git log -1 --pretty=format:"%ci {}" -- {} | sort -r

按文件名排序

指定从第4个字段(前3个为日期、时间、时区)开始排序即可:

# 升序(按文件名A-Z排序)
git ls-files "C:\WORKDIR\REPOS\some_repo\some_folder" | xargs -I {} git log -1 --pretty=format:"%ci {}" -- {} | sort -k4

# 降序(按文件名Z-A排序)
git ls-files "C:\WORKDIR\REPOS\some_repo\some_folder" | xargs -I {} git log -1 --pretty=format:"%ci {}" -- {} | sort -rk4

Windows PowerShell 兼容方案

如果环境没有grep/awk/xargs工具,可直接使用PowerShell命令:

# 获取当前目录下所有Git跟踪文件+最后提交日期,按提交日期降序
Get-ChildItem "C:\WORKDIR\REPOS\some_repo\some_folder" -File -Recurse | ForEach-Object {
    $commitDate = git log -1 --pretty=format:%ci -- $_.FullName
    [PSCustomObject]@{
        提交日期 = $commitDate
        文件路径 = $_.FullName
    }
} | Sort-Object 提交日期 -Descending

# 按文件名排序只需修改Sort-Object的参数
# | Sort-Object 文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:15:05