这个问题的原因之一是我找不到任何文件中的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:
字段的评论命令行选项,即使使用默认值(没有覆盖默认值)?
答案 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.name
和user.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}>"