我们托管一个私有(private) gitlab 存储库,但我相信这是一个整体 git 问题,因为我以前见过这种行为。
假设我的真实 gitlab/github/etc 帐户详细信息如下:
用户名:emmdee
用户邮箱:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0c6961616869694c6175216f63617c6d62752269746d617c6069226f6361" rel="noreferrer noopener nofollow">[email protected]</a>
因此,我转到某个服务器并克隆一个存储库,进行一些更改,然后准备提交。
如果我在本地设置用户名和电子邮件:
git config user.name "Someone Else"
git config user.email "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0774686a62686962626b746247627f666a776b622964686a" rel="noreferrer noopener nofollow">[email protected]</a>"
当我将提交推送到服务器时,上面的用户名/电子邮件将被添加为提交作者。
“其他人”显示为作者,无论我是否需要输入我的真实凭据来验证推送(ssh key 或用户/密码)。
问题场景:
由 30 名开发人员组成的团队,甚至可能还有一些外部供应商。有人推送了一些有问题的代码,但“欺骗”了他们的用户名/电子邮件,如上所示。我如何追踪推送的实际作者? (他们必须在推送操作期间进行身份验证)
问题:
- 这种行为是否有我不明白其目的的具体原因?
- 有没有办法查看原始提交作者(因为他们在推送期间使用用户/密码或 ssh key 进行了身份验证)
- 有没有办法禁用此服务器端并强制使用真实信息(或最好的情况 - 只需自动使用用于验证推送的帐户信息 )
最佳答案
Is there a specific reason for this behavior that I'm not understanding the purpose of?
Git 是一个分布式源代码控制系统:它无法访问任何地方都可以进行提交的“真实用户库引用”:因此用户。姓名/电子邮件只是您设置的字符串。
因此,身份验证部分(例如推送时)与提交作者部分没有任何关系。
如果您担心“欺骗”,那么您至少可以强制只接受签名的提交(请参阅“Is there a way to “autosign” commits in Git with a GPG key?”):这会将提交与证明其来源的信息相关联。
关于git - 使用 git 提交强制执行经过身份验证的用户名(在本例中为 Gitlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49932218/