为什么我可以在不登录的情况下以不同的 user.name 和 user.email 推送到远程?

问题描述

我首先在 Windows 的凭据管理器中删除了与 git 相关的所有凭据,将我的 user.name 和 user.email 更改为 repo 中的另一个用户,然后推送到远程。 Git 然后让我通过浏览器登录。我单击了登录按钮,显示的浏览器选项卡告诉我身份验证立即成功,而没有要求我输入新用户的密码。当我检查 Github 上的提交历史时,它显示提交是由新用户(我将 user.name 更改为的用户)进行的,但该用户从未登录过我的计算机。这怎么可能?和ssh有关系吗?但我只使用 https 推拉。为什么新用户可以推送到我的仓库?我没有将他添加为我的合作者。

解决方法

user.nameuser.email 根本与身份验证无关。这些只是写入本地提交的字段。任何人都可以为这些字段编写任何内容,任何人都可以推送由任何人声明的提交。

您可以将这些字段视为电子邮件签名:您在创建电子邮件/提交时编写它,人们可以阅读它,但它只是电子邮件/提交的一部分,任何人都可以在他们发送的电子邮件/提交中写入任何内容/制作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...