You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps推送报错,如何用Git Log查找非@abc.com邮箱的提交?

查找所有作者邮箱非@abc.com的Git提交

方法1:使用Perl正则直接匹配(推荐)

用--author参数结合Perl正则,精准定位作者邮箱部分并排除@abc.com格式:

git log --name-only --author='<[^>]+@(?!abc\.com)[^>]+>' --perl-regexp

正则说明:

  • <[^>]+:匹配邮箱开头的<符号及前面的用户名部分
  • @(?!abc\.com):负向前瞻断言,确保@后面不是abc.com
  • [^>]+>:匹配邮箱剩余部分直到结尾的>符号

方法2:通过提取邮箱后过滤

如果Perl正则不生效,也可以先提取提交的邮箱信息,再过滤不符合要求的提交:

git log --name-only --format="%H %ae" | awk '$2 !~ /@abc\.com$/ {print $1}' | xargs git log --name-only --no-walk

步骤说明:

  1. git log --format="%H %ae":输出每个提交的哈希值(%H)和作者邮箱(%ae)
  2. awk '$2 !~ /@abc\.com$/ {print $1}':过滤掉邮箱以@abc.com结尾的提交,只保留不符合要求的提交哈希
  3. xargs git log --name-only --no-walk:根据哈希值查看这些提交的详细文件变更信息

你之前的正则失败原因

  • 第一个正则未考虑Git作者字段的格式(Name <email@domain.com>),直接匹配@后面的内容,没有定位到邮箱的<>包裹区域,导致匹配范围错误
  • 第二个正则存在语法错误:(?!*)是无效的正则表达式,且未正确定位到邮箱位置

内容的提问来源于stack exchange,提问作者Fylix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:20:37