git - 按最近修改日期 (git) 以人类可读格式排序的文件列表

标签 git shell zsh

假设我们在一个包含多个文件夹和文件的 git 存储库中。我希望以人类可读格式 获得存储库中所有文件 的列表及其最近的修改时间戳。

列表应按此修改时间戳排序

关于如何处理这个问题有什么想法吗?

我假设 git ls-files 可以用于此但还没有找到解决他的问题的好方法。

更简单的问题:

假设我们只想对存储库中给定目录下的当前分支当前可访问的文件执行相同的操作。


一些相关的线程和解决方案:

最佳答案

列出存储库中所有文件的需求是雄心勃勃的。从所有引用或仅从 HEAD 或仅从一个或多个特定分支可访问的所有文件?为了简化它,我假设它是 HEAD。

git log HEAD --pretty="/invert:%h" --name-only | grep -v -E "^\/invert:|^$" | sort -u | while read path;do echo $(git log -1 --pretty="%ad %h" --date=format:"%Y-%m-%d %H:%M:%S" -- "$path") $path;done | sort -u

%ad是作者日期。如果您需要提交日期,请使用 %cd . HEAD 可以是另一个分支或引用或修订范围。

如果是所有的refs,试试

git rev-list --all | xargs -i git log -1 {} --name-only --pretty="/invert:%h" | grep -v -E "^\/invert:|^$" | sort -u | while read path;do echo $(git log -1 --pretty="%ad %h" --date=format:"%Y-%m-%d %H:%M:%S" -- "$path") $path;done | sort -u

如果是所有分支,试试git rev-list --branches .如果是一些特定的分支,git rev-list --branches=<pattern>

更新:另一种获取更改文件的方法,git diff <commit>^ <commit> --name-only

关于git - 按最近修改日期 (git) 以人类可读格式排序的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37953719/

相关文章:

bash - bash 陷阱 ERR 中的神秘 LINENO

bash - Bash 中的管道输出和捕获退出状态

linux - 在不存在的地方复制并创建一个带有日期时间戳的目录

Pythonbrew 在 Ubuntu 上安装 ZSH

git - 获取最新稳定版git

GitFlow : when to delete or freeze feature/release branches?

git - 对 public_html 目录使用主分支克隆

python - 通过requirements.txt正确安装依赖项或如何正确安装已编辑的依赖项

node.js - 安装 Node 后找不到 NPM 命令

bash - 从 zsh 进入 bash 时如何加载 ~/.bash_profile?