Git:列出所有最近未更改的文件

3

我是一个大型的git仓库,我想找到长时间没有修改过的文件列表,并按日期排序,我尝试了以下命令:

git log --pretty=format: --summary --before="<date>" 

它给出了在date之前修改的文件列表,但我想知道所有文件按最后修改日期降序排序的列表(最旧的文件在顶部)。此外,该列表应仅包含当前存在于存储库中的文件,我不关心已删除的文件。

有人可以建议正确的命令吗?


1
我不认为git log会自己做到这一点...你可能需要将结果导入到类似于“sort”的东西中-这个答案有帮助吗?https://dev59.com/hGIk5IYBdhLWcg3wWc7T#19362660 - Fred
@Fred 谢谢,我会查看这个建议。 - erkfel
2个回答

4
根据评论中@Fred发布的链接,您可以尝试以下操作:
while read file; do echo $(git log --pretty=format:%ai -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -r

这对我很有帮助。


这是我对代码的微调,列出了最近未更新的20个文件,并忽略空格更改和重命名:while read file; do echo $(git log --pretty=format:%ai -n 1 --date=raw -w --follow -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort | head -n 20 - Aidan Feldman

1

不要认为有一个 git 命令可以做到这一点,但尝试使用 tree 命令和 sort。 它看起来有点丑陋,但我相信它非常接近你想要的。

tree -ifFCD --timefmt '%Y%m%d %H%M%S' | sort -k1 -k2

-D 打印文件最后修改时间的日期,或者如果使用了 -c,则打印文件最后状态更改的时间。


1
非常感谢您的指导,但是我的代码库只是克隆下来的,所有文件的修改日期几乎都一样。我已经尝试过使用-D和-c选项了。 - erkfel
我会向 git 提交一个功能请求,也许将来会有这个功能。 - Ask and Learn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接