在我自己的GitHub存储库中,我注意到有来自unrecognized author
的提交。
我已经开始调查了,我意识到当我通过Visual Studio 2015 - Team Explorer
推送我的远程存储库上的任何更改时,即使我更改了我的全局.gitconfig
设置并设置了无效的用户名,也会成功推送更改以及无效的电子邮件地址 - 当我得到unrecognized author
时就是这种情况。
如果我尝试通过git bash
命令提示符直接推送更改,并输入无效的用户名或密码,我会得到:invalid username or password
- 这很明显,也很正常。
我得到:The requested URL returned error: 403
如果我输入有效的用户/通行证 - 但同样,这是正常的,因为我没有将此用户添加为我的Collaborator
。
如果我将此用户添加为我的协作者,我可以成功推送。
那么,为什么会这样呢?
为什么GitHub允许我使用无效的用户/电子邮件通过VS 2015推送更改?
答案 0 :(得分:3)
从根本上说,git是分散的。存储库的每个副本都彼此相同。提交可以从任何地方到任何地方。从远程X提取提交并将它们推送到远程Y是完全正常的,当它们显示在远程Y上时,即使该人可能没有远程Y上的帐户,原始提交者的名字仍将在他们身上。 / p>
远程Y(在这种情况下为github)因此不能拒绝推送只是因为它包含一些无法识别的提交者名称。
当您从命令行进行身份验证时,您没有输入用户名和密码来将自己标识为正在推送的提交的作者。您只是将自己视为有权将这些提交放入存储库的人。据推测,当您从IDE执行此操作时,它正在使用您在某些时候输入的github凭据。