Github 允许我以另一个用户的身份提交

whi*_*edb 7 git github

我正在学习如何使用 Git,并且我注意到提交时无法控制 user.name 和 user.email。例如,我在我的存储库中。我可以更改我的本地配置,

$ git config user.name "<someone's Github username>"
$ git config user.email "<someone's Github email>"
Run Code Online (Sandbox Code Playgroud)

然后,我提交一些东西并推送它。我将被要求提供我的 Github 用户名和密码。

现在看起来好像另一个 Github 用户在我的存储库中创作了该提交。!?

我错过了什么吗?

小智 6

哇,这是一个很好的问题,我不明白为什么这没有得到更多关注(也许是因为它与 SU 的安全性并不完全相关)。

有一个关于它的黑客新闻讨论 - https://news.ycombinator.com/item?id=7792026

这不是一个大问题,但你可以用它做一些严重的滥用 -

  1. 您可以发布名人的提交,使其看起来像是他们认可您的项目并积极为其做出贡献。
  2. 您可以通过使用其他真实 GitHub 用户的多个身份来伪造项目实际拥有的贡献者数量。(这看起来比仅使用随机电子邮件更合法)
  3. 您可以说服某人将拉取请求合并到他的项目中,方法是让他认为大多数提交来自另一个受信任的用户

最近 GitHub 被批评还允许项目所有者编辑用户在他们项目中回复的评论,使其看起来像是他们写的东西不是他们写的,这可能会导致严重的滥用。这是非常相似的事情。

正如其他答案所提到的,这就是 Git 的设计方式。在内部存储库中,您不太关心这些东西,您最关心的是管理代码而不是声誉。另一方面,GitHub 是一个社交工具,应该关心其用户的公共声誉(正如黑客新闻讨论中提到的,这可以通过 PK 加密解决。许多用户已经将 PK 分配给他们的 GitHub 帐户以获得推送权限,我想同样的密钥可以用于签署提交)


Dav*_*rtz 2

Git 无法知道谁创作了什么。它怎么知道?它所做的只是报告你告诉它报告的内容。垃圾进垃圾出。

一个人承担另一个人的工作是绝对正常和例行公事的。