名称在 Git 中的工作原理

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

提交到本地存储库时,Git 会在提交中包含你的名称和电子邮件地址。 此行为有时可能会导致混淆。 提交上的姓名和电子邮件可能与用于登录到 Git 主机(如 Azure Repos)的标识不匹配。 你可能在多个姓名和电子邮件地址下均有提交,即使你是每个提交的作者。

为什么存储库会为你显示多个姓名?

你是否在历史记录页面上搜索过自己的姓名,并为自己找到多个略有不同的条目? 你可能想知道出现此现象的原因。

答案很简单:你的姓名在不同提交中的记录互不相同。 也许你有两台计算机,且其中一台配置了你的全名(例如,Frances),而另一台这配置了昵称(例如,Frank)。 或者,你有一台连接到 Microsoft 帐户的家用计算机(例如,frances@outlook.com)以及一台连接到你雇主的 Microsoft Entra ID 实例的工作计算机(例如,frances_t@fabrikam.com)。 你甚至有可能会随着时间的推移更改设置,因此较旧的提交有一个姓名,而较新的提交又有另一个姓名。

Git 在何处获取你的名称和电子邮件?

Git 会将你的姓名和电子邮件地址存储在其配置文件中。 此文件可以位于系统级别,可以是计算机上帐户的全局文件,也可以是存储库的本地文件。 如果 Git 在任一此类位置均未找到姓名和电子邮件地址,则会尝试从你的操作系统获取此信息。 Git 会在提交中包含你的详细信息,以将你标记为该提交的作者。

首次在新计算机上设置 Git 时,可使用 Git 的“尽力而为”信息创建提交。 Git 会提示你设置显式姓名和电子邮件地址,并将新设置用于后续提交。 此更改通常是一位作者有多个姓名的原因所在。

Azure DevOps Services从何处获取你的名称和电子邮件?

Azure DevOps Services 中的详细信息来自你的配置文件。 你的配置文件最初是根据你的 Microsoft 帐户或 Microsoft Entra 帐户中的详细信息来填充的,但你可自行更改这些详细信息。

在 Web 上编辑文件或完成拉取请求时,Azure Repos 会以提交作者的身份提供个人资料详细信息。 这是另一个以不同方式指定名称或电子邮件地址的机会。

如何在 Git 和 Azure DevOps Services 中更改信息?

在 Git 中,可运行以下命令来更改姓名和电子邮件地址。 将示例值替换为你的信息。

git config --global user.name "Frances Totten"
git config --global user.email "frances_t@fabrikam.com"

在 Azure DevOps Services 中,可通过选择右上角的图片,然后选择我的个人资料更新个人资料

如何更改为过去提交显示的作者?

如果你在本地执行了一次更改而它的作者有误,则可使用新的作者信息修改该提交。 请务必将其格式设为 Name <email>,如以下示例所示。

git commit --amend --author="Frances L. Totten <frances_t@fabrikam.com>"

在大多数其他情况下,最好保留现有的作者信息。 若要更改作者姓名或电子邮件,必须创建新的提交。 更改提交时,从该提交派生的所有后续提交也必须更改。