按最近修改日期 (git) 以人类可读格式排序的文件列表
List of files sorted by their most recent modification date (git) in human readable format
假设我们在一个包含多个文件夹和文件的 git 存储库中。我希望在回购协议中获得 所有文件 的列表及其最近的 人类可读格式的修改时间戳 。
列表应按此修改时间戳排序。
关于如何处理这个问题有什么想法吗?
我假设 git ls-files
可以用于此,但还没有找到解决他的问题的好方法。
更简单的问题:
假设我们只想对当前可在当前分支上的 given 目录下的文件执行相同的操作存储库。
一些相关的线程和关闭解决方案:
- git ls-files sort by modification time(只有当前文件夹下的文件,但是日期时间输出是不是人类可读格式)
列出存储库中所有文件的需求是雄心勃勃的。从所有引用或仅从 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 ls-files
可以用于此,但还没有找到解决他的问题的好方法。
更简单的问题:
假设我们只想对当前可在当前分支上的 given 目录下的文件执行相同的操作存储库。
一些相关的线程和关闭解决方案:
- git ls-files sort by modification time(只有当前文件夹下的文件,但是日期时间输出是不是人类可读格式)
列出存储库中所有文件的需求是雄心勃勃的。从所有引用或仅从 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