如何便捷打印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
相关产品推荐
相关产品推荐

