git - 使用 git 提交强制执行经过身份验证的用户名(在本例中为 Gitlab)

标签 git gitlab

我们托管一个私有(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/

相关文章:

GitHub 凭证未保存在 IntelliJ 中

GIT:<目录> 已存在于索引中

gitlab - 如何从 gitlab 项目中删除为问题生成的默认标签列表?

sed - 如何使用 sed 将 yml 文件中的变量替换为 gitlab ci 管道变量

gitlab - 如何在自动运行的情况下手动运行 GitLab CI 管道?

linux - 使用带有 --parseopt 的 git rev-parse 访问 shell 脚本中的命名参数

git - 具有两个不同父提交的两个提交之间的差异

continuous-integration - 管道启动后是否可以更改 Gitlab CI 变量值?

python - Gitlab Api 提交落后/领先大师

node.js - 为什么 npm install 在 git bash 上不起作用