【问题标题】:Git: list all least recently changed filesGit:列出所有最近最少更改的文件
【发布时间】:2016-07-20 14:38:35
【问题描述】:

我有一个很大的 git 仓库,我想找到按日期排序的长时间未修改的文件列表,我尝试了命令:

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

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

谁能提出正确的命令?

【问题讨论】:

  • 我不认为 git log 会自行执行此操作...您可能必须将结果传送到 sort 之类的东西 - 这个答案有帮助吗? stackoverflow.com/a/19362660/251983
  • @Fred 谢谢,会检查这个建议

标签: git git-log


【解决方案1】:

根据在评论中发布@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 &lt; &lt;(git ls-tree -r --name-only HEAD) | sort | head -n 20
【解决方案2】:

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

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

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

【讨论】:

  • 好命令,谢谢,但我的存储库刚刚克隆,所有文件的修改日期几乎相同。我尝试了 -D 和 -c。
  • 我将向git提交功能请求,也许将来会提供。
猜你喜欢
  • 1970-01-01
  • 2015-09-09
  • 2013-05-12
  • 1970-01-01
  • 2021-09-28
  • 2016-05-25
  • 2016-12-11
  • 2019-09-28
  • 1970-01-01
相关资源
最近更新 更多