在GIT中,"git config user"和GitHub账户的实际凭据有什么区别

In GIT, what is the difference between "git config user" and the actual credentials of GitHub account

我已经阅读了这个 上的内容,但我还是不太清楚。基本上,据我所知,我可以使用 as git config user.namegit config user.email 任何我想要的,不管我使用的是真实的 GitHub 帐户(其中询问我的凭据我第一次做 git push).

此外,在 GitHub 提交中,它显示 user.name 而不是实际 GitHub 帐户的用户名。所以重点是,它们之间有什么区别? git config user.namegit config user.email 有什么意义?

Github 基本上只是托管一个 git 服务器。 github 凭据使 github 知道您有权实际推送到 git 服务器,然后 user.nameuser.email 使实际git 服务器知道将您的提交显示为什么。

这只是两件事。它们相互关联的唯一原因是因为 we 在 GitHub 帐户和电子邮件在提交中的用户之间建立了隐式关系(实际上这不完全正确,但稍后会详细介绍。我想说明一点)。

好的,更正式一点:是的,您的理解是正确的,您可以设置任何 user.nameuser.email,而不管实际的 GitHub 帐户。为什么会这样?

因为 git 在您的 .git 项目中 不关心 您托管代码的位置。它可以在 GitHub、GitLab 或 Bitbucket 上,自托管,在同一台机器上的不同文件夹中,无论何处。所有 git 关心的是对于每个提交,都有一个创建该提交的人,his/her 名字是已知的并且 his/her 电子邮件是已知的。这就是用户对 git 的意义,这就是 git 使用用户的意义(以最基本的形式)。

那么为什么要有一个 GitHub 帐户呢? 因为它只是另一个在线平台,您需要在该平台上拥有一个帐户。这与拥有 Facebook 或 Twitter 帐户没有什么不同。

这就是我们在两者之间存在 隐式 联系的原因。因为您的任何 git 项目都不关心 GitHub 或任何其他服务,并且 GitHub 不会真正抱怨您使用的电子邮件和名称。

你和我以及任何人实际上都可以 伪造 我们的 git 帐户并创建虚假提交并将它们随意推送到我们自己的 GitHub 帐户。是的,你可以这样做。您可以使用我的电子邮件和用户名,我将其用于我的提交并提交给 您的 项目。为什么是你的?因为您可以验证 您的 GitHub 帐户。你 不能 推送我的项目,除非我给你权利或者你知道我的 GitHub 帐户!

好吧,最后但同样重要的是,一开始我对你撒了一点谎。我经常说我们在两者之间有一个 隐含的 联系,但很明显,事实并非如此。更好的说法是:GitHub 与您的 git.username and git.email 关系密切,而 git 本身很少关心此类提供者。由于安全限制,我们可以看到 GitHub 与您的 git 帐户有这样的关系...

这是来自 GitHub

的部分文档

Commits will appear on your contributions graph if they meet all of the following conditions: The email address used for the commits is associated with your GitHub account.

所以从技术上讲是的,你可以假装成其他人,但你不会从中得到任何东西。

Edit 这也是指出 git 也支持 signing commits/tags 的好时机。一种让你证明 是你的提交的实际作者而不是一些随机黑客的方法。你是否应该这样做是另一个问题。