GitHub 如何知道哪个用户克隆了存储库?

How does GitHub know which user cloned a repo?

提问人:user22538392 提问时间:11/1/2023 更新时间:11/2/2023 访问量:88

问:

我不是在问我怎么知道谁克隆了我的存储库。我在问 GitHub 怎么知道我是克隆 repo 的人,而不是其他帐户。

如果其他人克隆了我的存储库,git 怎么知道那是不同的用户而不是我?有人可以克隆我的存储库,并从他们的帐户直接贡献/推送到它吗?其他人可以克隆我的 repo 并假装是我并贡献/推送它吗?

git github 克隆 git-clone

评论

2赞 eftshift0 11/1/2023
如果它是一个开放的存储库,则不涉及身份验证,因此 GitHub 不知道是谁克隆了它。但是,如果它是私有的,则会进行一些身份验证,然后 GitHub 知道是谁做的(或者如果用户无权访问它,则可以明确拒绝克隆的发生)。
0赞 user22538392 11/2/2023
但是当我在 GitHub 上提交我的存储库时,它会在提交旁边显示我的用户名
1赞 eftshift0 11/2/2023
这只是 GitHub 注意到提交中显示的用户/电子邮件(顺便说一下,可以是任何值......我可以设置我想要的任何值,当我提交时)是他们在系统中注册的用户......它与克隆 repo 无关......所以,我不明白你要去哪里。user.nameuser.email
0赞 user22538392 11/2/2023
该死的,你是对的。我应该改写我的问题 - 我想知道 GitHub 如何知道谁进行了给定的提交。根据你所说的,GitHub 只是根据 和 ?如果是这样,任何人都可以推送到我的公共回购,只要他们设置的 和 与我的相同(我是唯一的贡献者)?user.nameuser.emailuser.nameuser.email
1赞 eftshift0 11/2/2023
不。推送需要身份验证(与 或 无关)。GitHub 无法访问 your 和 values。当提交完成时,git 会使用这些值......GitHub 在分析提交时使用提交中设置的任何作者。user.nameuser.emailuser.nameuser.email

答:

0赞 Gayantha 11/1/2023 #1

如果您的存储库是私有的,并且没有邀请其他人作为贡献者,则其他人无法贡献。

如果您的存储库是私有的,那么没有人可以通过在 GitHub 上搜索来访问它。

GitHub 正在使用身份验证来识别哪个用户贡献了此存储库。如果您使用 Git,则必须将您的凭据也包含在 Git 中才能推送一些更改。

评论

0赞 user22538392 11/2/2023
如果我的回购是公开的怎么办?
1赞 etex 11/2/2023 #2

GitHub 不知道谁克隆了 Repo。任何人都可以克隆公共存储库,这不是问题。推送到 GitHub 时,GitHub 使用 你的 来构建并向你发送挑战。此质询是用 Your 加密的消息,只有您(持有者)才能解密消息并发送正确的响应。如果你解决了挑战,你可以推送,否则 GitHub 不允许你推送。ssh public keypublic keyprivate key

公钥只能用于加密,因此您可以与任何人共享它,并且只有私钥可用于解密。有关 SSH 密钥的更多信息,请查看此处。也可以使用 GPG 密钥,概念类似。

对于 Git,Git 只是使用配置,因此它可以是任何字符串。有人可以使用您的用户名和电子邮件,这不会影响 GitHub 身份验证。user.nameuser.email