答案 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