Git 初学者警报!我有一个基本问题,为什么 GIT 允许更改用户名作为配置选项
git config --global user.name trojan
这个选项是否会为提交者冒充并在历史/日志中造成混乱打开大门?为什么不像从用于连接 GIT 的凭据中获取用户名那么简单?
- As 格雷格在评论中指出,只能在纯推送工作流程中工作。还有很多其他的,包括纯拉动、电子邮件、
git bundle
,或这些的任意组合。
- 它不能quite出于技术原因工作:提交的身份是该提交的完整内容的加密校验和,包括提交的
author
and committer
字段。这些必须在创建提交时分配,并且一旦分配,就永远不能更改:要“更改”提交的任何部分,请将其复制到新的提交对象,该对象会获取新的提交哈希,该哈希仅与原始提交相同(如果是)逐位完全相同的。换句话说,我可以通过逐位复制您的提交来冒充您,包括所有源代码、日志消息、时间戳等。但要做到这一点我必须get你的提交,之后我的副本就是你的提交。在这种情况下,它is你的承诺,以及它should上面有你的名字!
- 通常有充分的理由将公开的身份(用户名和电子邮件)与任何身份验证凭据分开:例如,我用于对 GitHub 进行身份验证的凭据与我用于对其他位置进行身份验证的凭据不同。但我还是同一个人。人们可以添加一定程度的间接性——我使用凭据进行身份验证A,然后是站点地图A to B获取我的名字(事实上 GitHub 就是通过 ssh 来实现这一点的,因为一个人“登录”为
[email protected]
)——但这将所有权力都掌握在网站手中。这与设计理念相悖。
如果您希望建立真实性某些特定提交的 - 例如,您获得 ID 为99154acf3ba...
或类似的东西,并且它声称是由 Linus Torvalds 或 Bill Gates 或 Barack Obama 或其他什么人创作的——Git 提供了使用某些外部身份验证服务的能力,例如 PGP,它使用数字签名及其所有复杂性(包括信任链和撤销)。容我们说,这个特殊领域有一些持续的发展,其中一些对 Git 有所影响.
(通过 GPG 进行 PGP 身份验证is内置于 Git,但由外部程序完成。这里特别明显的弱点是签名的标签或提交仅验证一个标签或提交本身。进一步的身份验证取决于系统的安全性默克尔树,这不是quiteGit 对 SHA-1 的使用尚未受到损害,但越来越受到怀疑:请参阅链接的 StackOverflow 问题。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)