显然这个:
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
Run Code Online (Sandbox Code Playgroud)
过滤器根据提交者日期提交.如何让它显示指定作者日期范围的提交?
jac*_*dbd 88
也许我错过了什么,但这不够吗?
git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"
Run Code Online (Sandbox Code Playgroud)
另见这里
tor*_*rek 23
你不能 - 至少,不是仅仅在Git中.(提醒其他人访问这个问题:它不是关于查看作者日期,而是关于通过作者日期选择提交,la --since/ --after和--until/ --before.这些选择器使用提交者日期,而不是作者日期.考虑作为一个极端的例子提交"现在",所以它的提交日期是在2000年代,但在作者日期字段中回溯到1999年的某一天.如果你的选择范围是"世纪之交的任何时间"你将会 - 选择这个提交,因为它的提交日期是"现在",比1999年超过十年.)
我认为这是Git中的一个小错误:您应该能够请求它使用作者日期字段,您可以请求它使用提交者日期字段.这对于日志格式化来说很容易,因为我们有%ad等等%cd,但是通过提交选择是不可能的.我们最接近的是git rev-list可以按作者日期排序(在一般拓扑排序中).
git rev-list像--use-author-date,一个全局切换将作为一个简单的补丁工作,并不会太难添加到Git,但我认为拥有--min-author-age和/ --max-author-age或类似,以及"按作者日期排序"标志会更好(独立于一般--topo-order标志,以便设置两个标志具有相同的效果--author-date-order).
作为一种解决方法,您可以列出所有可能有趣的提交(使用git rev-list或等效,例如git log:使用任何说明符使提交可能有趣,除了日期过滤器:在这种情况下只是--all)并提取所有作者日期字段(与git log --format=%at或者其他),然后自己修剪提交ID列表,然后重新提交剩余的提交ID git log --no-walk.但这充其量是痛苦的.请参阅Tim Beigeleisen的答案,使用awk获取更多信息.
Tim*_*sen 19
你可以.
但正如@torek所提到的,你可能无法用纯Git做到这一点.一种选择是管道从一些输出漂亮的格式git log为awk,并检查作者日期有:
git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"'
Run Code Online (Sandbox Code Playgroud)
这里,%ad以ISO格式给出作者日期,并%aN给出作者姓名.
对于那些寻求快速复制粘贴解决方案的人:
git log --pretty='%aI %H' | \
awk '$1 >= "<after-date>" && $1 <= "<before-date>" { print $2 }' | \
git log --no-walk --stdin
Run Code Online (Sandbox Code Playgroud)
笔记:
<after-date>部分<before-date>可以根据需要省略YYYY-MM-DDThh:mm:ss例如2021-04-20T13:30:00)--after/类似--before,它们将始终向下舍入为精确时间。因此,例如,要查找特定日期的所有提交,需要以下之一:
$1 >= "2021-04-20T00:00:00" && $1 <= "2021-04-20T23:59:59"$1 >= "2021-04-20" && $1 < "2021-04-21"(通知<而不是<=)git log --date=iso-strict-local --pretty='%ad %H',或者您可以通过 unix 时间戳指定日期并使用%at。基于torek的回答, Mr_and_Mrs_D和Tim Biegeleisen(都参与了这个问题)也做出了贡献。
受到上面 Tim Biegeleisen 的回答的启发。
git log --all --date=iso --pretty=format:'%ad%x08%aN %s' | grep 2020-06-09 | sort -u
做了我需要的。我想要作者的日期,而不是提交日期,因为我经常变基和压缩。但我保留了导入提交的重要日期。
与此相关的是,我有一个小帮手,允许我重置作者的电子邮件,但保留原始作者的日期。--reset-author 默认情况下会覆盖作者的日期。
https://github.com/mathieujobin/git-scripts/blob/master/bin/git-reset-author-but-not-date
在上面的git log上,需要的时候可以添加%H获取gitsha
| 归档时间: |
|
| 查看次数: |
30340 次 |
| 最近记录: |