【发布时间】:2019-10-31 09:42:03
【问题描述】:
我正在使用来自here 的以下命令:
git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes
有没有办法按特定日期对authordate 进行排序?
例如,只显示 X 天或几个月前的结果,或者可能在给定日期之后?我正在考虑使用grep,但我希望有一种方法可以真正解析给定的日期来进行计算,而不仅仅是字符串匹配。
我想出了以下使用sed:
git for-each-ref --format='%(color:cyan)%(authordate:format:%Y-%m-%d %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes | sed -n '/{start_year}-*/,/{end_year}-{end_month}-*/p'
但最好只给出一个特定日期并在该日期之前或之后获得所有结果。
编辑:如果给定的结束日期不存在,则上述使用 sed 的方法不起作用,因为 sed 只是一个流编辑器。例如,如果生成的 sed 字符串是 '/2017-*/,/2018-10-*/p',但没有匹配 2018-10-* 的条目(2018 年 10 月没有提交的分支),那么它将获得 2017 年以后的所有结果。也就是说,它不是真正的日期范围计算;这是一个简单的字符串匹配,当它找到与右侧匹配的第一个条目时停止。
【问题讨论】:
-
以 seconds-since-epoch 格式获取作者日期,使用它来选择您感兴趣的日期 - 这是一个简单的日期 >= start && state 然后格式化日期戳以使其美观。
标签: git