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

如何便捷打印Git默认作者信息?Git是否有内置简化写法?

Git是否有内置命令简化作者信息格式生成?

有没有Git内置的简便命令,替代printf '%s <%s>' "$(git config --get user.name)" "$(git config --get user.email)"来生成类似My Name <email@example.org>格式的字符串?最终目的是简化以下Git别名:

co-author !git commit --amend --message="$(git show --format=%B --no-patch HEAD)" --message="$(printf 'Co-Authored-By: %s <%s>' "$(git config --get user.name)" "$(git config --get user.email)")"

回答

当然有,Git内置了git var GIT_COMMITTER_IDENT和git var GIT_AUTHOR_IDENT命令,它们会直接输出包含姓名、邮箱、时间戳和时区的完整作者信息,格式类似My Name <email@example.org> 1620000000 +0800。如果只需要姓名+邮箱部分,可以用文本处理工具截取:

方法1:用sed提取核心部分

git var GIT_COMMITTER_IDENT | sed -E 's/ (.*>).*/\1/'

这个命令会保留从开头到第一个>的内容,刚好就是姓名 <邮箱>的格式。

方法2:用cut截取字段

git var GIT_COMMITTER_IDENT | cut -d' ' -f1-2 | sed 's/ $//'

先按空格分割取前两个字段,再去掉末尾多余的空格。

用上面的方法,你可以把别名简化成:

co-author !git commit --amend --message="$(git show --format=%B --no-patch HEAD)" --message="Co-Authored-By: $(git var GIT_COMMITTER_IDENT | sed -E 's/ (.*>).*/\1/')"

另外补充:如果只是想简化原有的printf拼接写法,也可以直接用Git config的批量读取,但git var的方式更贴合Git内置功能,不需要手动处理两个独立的配置项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:10:55