显示Git使用的有效/实际作者和提交者

时间:2015-07-21 08:48:04

标签: git

是否有Git命令显示作者和提交者,这些命令将根据应用的所有配置源在下一次提交中使用?

这个问题的原因之一是我找不到任何文件中的username(以下示例中报告的提交者):

grep -r obsdev .git/config ~/.gitconfig /etc/gitconfig
# no output

显然,还有另一个配置源。

关键是我不想了解现在或将来存在的任何可能的配置源,或者它们应用和相互覆盖的顺序。相反,我想让Git弄清楚并显示最终/有效的作者/提交者值。

实施例

在某些情况下(如命令行选项--author)Git会在编辑器中显示已注释掉的Author:Committer:字段以提交消息:

# Please enter the commit message for your changes. Lines starting              
# with '#' will be ignored, and an empty message aborts the commit.             
#                                                                               
# Author:    First Last <first.last@example.com>                               
# Committer: username <username@localhost.localdomain>                              
#   
...

有没有办法在不尝试提交的情况下显示这些字段?

另外,是否有可能强制Git在提交消息编辑器的任何情况下提供包含Author:Committer:字段的评论命令行选项,即使使用默认值(没有覆盖默认值)?

2 个答案:

答案 0 :(得分:2)

您可以使用git var

# show the author (sed is there to strip the timestamp)
git var GIT_AUTHOR_IDENT | sed -r 's/( [^ ]+){2}$//'
# and the committer
git var GIT_COMMITTER_IDENT | sed -r 's/( [^ ]+){2}$//'

但是,如果您还没有配置您的姓名和电子邮件,它会打印警告而不是提供值。解决方法是:

# show the author
git var -l | grep -E '^GIT_AUTHOR_IDENT=' | sed -r 's/^[^=]+=//;s/( [^ ]+){2}$//'
# and the committer
git var -l | grep -E '^GIT_COMMITTER_IDENT=' | sed -r 's/^[^=]+=//;s/( [^ ]+){2}$//'

答案 1 :(得分:1)

我不知道在Git中有任何内置方法可以做到这一点。 Git使用配置值user.nameuser.email,它们可以被环境变量$GIT_{COMMITTER,AUTHOR}_{NAME,EMAIL}覆盖。

一个简单的shell脚本可以为您提供所需的信息:

NAME=$(git config user.name)
EMAIL=$(git config user.email)

echo "Author:    ${GIT_AUTHOR_NAME:-$NAME} <${GIT_AUTHOR_EMAIL:-$EMAIL}>
echo "Committer: ${GIT_COMMITTER_NAME:-$NAME} <${GIT_COMMITTER_EMAIL:-$EMAIL}>"

另见git whoami