Git命令行界面:通过用户名获取用户信息

104

有没有一种方法可以只通过用户名获取用户的名称?

类似于以下输出:git show <username>(我知道这不起作用)

username: username
name: First Last
email: email@address

我知道可以通过 GitHub API 调用来实现这个功能,但我更愿意在 CLI 中完成。

11个回答

153

79

git config --list

git config -l

将会显示你的用户名、电子邮件地址以及其他信息。


52

Git本身(命令行客户端,即"愚蠢的内容跟踪器")没有用户名称的概念,只有GitHub有。换句话说:在Git存储库中没有将GitHub用户名映射到作者/提交者名称和电子邮件的映射关系。

使用Git创建提交时,它使用user.name(真实姓名)和user.email(电子邮件地址)的配置值。这些配置值可以通过设置和导出环境变量GIT_{COMMITTER,AUTHOR}_{NAME,EMAIL}来覆盖控制台上的值。

Git不知道GitHub用户的任何信息,因为GitHub不是Git的一部分。因此,您只能使用GitHub的API调用(我猜您可以通过一些脚本从命令行执行并将其作为Git别名。)


8
来吧。试试这个 https://dev59.com/MGsz5IYBdhLWcg3w8Mqr#24051281,运行命令 git config --list - Nam G VU
4
@NamGVU你的意思是什么?原帖问如何将_GitHub_用户名映射到提交者的全名和电子邮件,这是不可能的。使用git config --list(或者更准确地说,git config user.name)只会显示当前配置的作者/提交者名称,而不会显示任何其他用户的名称或电子邮件地址。有趣的是许多没有回答问题的答案都得到了很多赞。对于不同的用例有用吗?肯定是。回答问题吗?不是。 - knittl
这是正确的答案。获取用户名的正确方法是查询托管服务(Github、Gitlab、Bitbucket等)。 - verboze

31

试试这个

git config user.name

git config 命令存储并提供所有信息。

git config -l

这个命令将提供所有你想要的必需信息。

你可以使用它改变信息。

git config --global user.name "<Your-name>"

同样地,您可以使用-l选项更改向您显示的许多信息。


14

虽然Git提交没有特定的"用户名"字段,但是Git仓库有用户,这些用户有名称。如果你想要的是GitHub用户名,那么Knittl的回答是正确的。但是,既然你的问题是关于Git CLI而不是GitHub,以下是如何使用命令行获取Git用户的电子邮件地址:

使用Git CLI查看Git仓库中所有用户的列表:

git log --format="%an %ae" | sort | uniq

按姓名搜索特定用户,例如“John”:

git log --format="%an %ae" | sort | uniq | grep -i john

6

使用此命令查看已登录用户(即实际的 Git 帐户):

git config credential.username

另外,与用户凭证(user credentials)不同,需要获取用户电子邮件和用户名:

git config user.name
git config user.email

查看所有配置列表:

git config --list

git config credential.username 的工作方式取决于您的登录方式。如果用户设置了SSH远程,则此项不会被设置。 - Carl Walsh

5
您可以尝试以下方法获取信息:
  • 用户名:git config --get user.name
  • 用户电子邮件:git config --get user.email
对于用户来说,没有“名字”和“姓氏”。
希望这能帮到您。

2
如果您正在使用GitHub CLI(因为已经安装了git):
grep "user:" ~/.config/gh/hosts.yml

2022年:除非您手动设置令牌,否则需要使用gh cli与git一起使用才能将文件git push到您自己的GitHub存储库中。可以使用gh cli自动设置令牌凭据使用,而不是每次登录都需要输入(一次性)或每次操作都需要输入(每次)。

https://github.com/cli/cli

https://cli.github.com


我在 gh 中配置了多个主机,因此我可以首先使用 grep 查找 github.com: 后面的行,然后查找用户:grep 'github.com:' ~/.config/gh/hosts.yml -A 1 | grep "user:" - Carl Walsh
你可能更喜欢使用:gh api user --jq .name(注意:只有在用户已经登录的情况下才会编写hosts.yml)。 - juj

2

这是一个旧帖子,但因为它在谷歌搜索中仍然是第一个结果,所以我想加入我的两分钱。大多数答案在技术上都不正确。正如@knittl所指出的那样:要获取用户名,您需要查询托管代码的服务,因为git本身没有用户概念。您可以配置像user.name这样的变量,但这可能是任何内容,并不一定是创建提交的用户。

对于Github,一种获取实际用户名的方法是使用他们的CLI工具gh。下载并经过身份验证后,您可以发出以下命令来获取用户名(使用jq检索名称):

gh api 'https://api.github.com/user' | jq .login


1
如果您使用的是Windows命令行,可以执行以下命令:git config --list | findstr user.name 来直接获取用户名。此处的 findstr 与Linux中的 grep 相似。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接