如何让git在作者日期的指定日期范围内显示提交?

时间:2016-05-18 23:08:53

标签: git git-show

显然是this

%in%

根据提交者日期过滤提交。如何让它显示指定作者日期范围的提交?

4 个答案:

答案 0 :(得分:63)

也许我错过了什么,但这不够吗?

git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"

另见here

答案 1 :(得分:18)

你不能 - 至少,不是仅仅在Git。 (提醒其他人访问此问题:不是查看作者日期,而是选择提交作者日期,la --since / {{1 }}和--after / --until。这些选择器使用提交者日期,而不是作者日期。考虑作为一个极端的例子,提交“现在”,以便它的提交者日期是在2000年代,但在作者日期字段中回溯到1999年的某一天。如果您的选择范围是“世纪之交的任何时间”,您将取消选择此提交,因为其提交日期是“现在”,比1999年超过十年。)

我认为这是Git中的一个小错误:您应该可以请求它使用作者日期字段,只要您可以请求它使用提交者日期字段。使用日志格式可以很容易,因为我们有--before%ad等,但提交选择是不可能的。我们最接近的是%cd可以按作者日期排序(在一般拓扑排序中)。

git rev-list中的全局切换,如git rev-list,可以作为一个简单的补丁,并且不会太难添加到Git,但我认为最好{{1} }和--use-author-date或类似的,以及“按作者日期排序”标志(独立于一般--min-author-age标志,因此设置两个标志与{具有相同的效果} {1}})。

作为一种解决方法,您可以列出所有可能有趣的提交(使用--max-author-age或等效的提交,例如--topo-order:使用任何说明符使得提交可能有趣,除了日期过滤器:在这种情况下,这是只需--author-date-order)并提取所有作者日期字段(使用git rev-list或其他),然后自己修剪提交ID列表,然后将剩余的提交ID重新提交给{{ 1}}。但这充其量是痛苦的。有关详情,请参阅Tim Beigeleisen's answer using awk

答案 2 :(得分:15)

可以

但正如@torek所说,你可能无法用纯Git做到这一点。一种选择是将 $scope.$on('search', function(event, data) { $scope.filterData(data) }); 的一些漂亮的格式输出传输到git log,并检查作者的日期:

awk

此处,git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"' 以ISO格式提供作者日期,%ad提供作者姓名。

答案 3 :(得分:2)

由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日志上,需要时,您可以添加%H以获得gitsha