如何按日期条件排除指定账户获取Git日志?
Git日志筛选问题修复方案
问题根源
原命令的--author正则失效,是因为Git的--author参数会匹配作者姓名或邮箱字段的任意部分,而你写的^(?!...)是从字段开头开始匹配负向预查,但作者字段通常是姓名 <邮箱>的格式,系统账户的邮箱在字段中间(<>内),所以预查规则没覆盖到这种情况,导致没过滤掉目标账户。
解决方法
方法1:直接指定要保留的作者(推荐,精准度更高)
不需要排除,直接明确指定允许的作者邮箱,避免误过滤:
# 单个指定用户 git log --date=iso --pretty=format:"[%ad] %h %an" --author='sachiko@XXX.co.jp' --after '2022-10-01' # 多个指定用户(需启用Perl正则) git log --date=iso --pretty=format:"[%ad] %h %an" --author='sachiko@XXX.co.jp|another-user@XXX.co.jp' --perl-regexp --after '2022-10-01'
方法2:修正排除法的正则
调整正则,让负向预查匹配作者字段中任意位置出现的系统邮箱:
git log --date=iso --pretty=format:"[%ad] %h %an" --author='^(?!.*(concourse@XXX.co.jp|git@localhost|devXXXXau)).*$' --perl-regexp --after '2022-10-01'
这里的.*表示任意字符任意次数,确保不管系统邮箱出现在作者字段的哪个位置(比如<>内),都会被检测并排除。
额外提示
Git的日期参数推荐用YYYY-MM-DD格式(如2022-10-01),比YYYY/MM/DD兼容性更好,避免解析错误。
内容的提问来源于stack exchange,提问作者Sachiko
相关产品推荐
相关产品推荐

