6

作者、提交者和推送者在 Git 中可以是不同的人,但 git 并没有将推送者的信息存储在日志中。

那么,我如何得到它?

4

2 回答 2

7

你没有。上游 repo不对谁提供提交做任何假设:它可以通过电子邮件、USB 密钥上复制的差异补丁以及其他
各种传输协议

其中一些协议(ssh、https)可能在其日志中包含您寻求的信息,但是:

  • 这与Git无关
  • 这假设他们的日志级别设置得当。
  • 即使对于Gitolite,在 repo 中注册的公共 ssh 密钥的名称gitolite-admin也可以是您想要的任何名称,并且与真实姓名无关。

正如 Linus 提到的(在“为什么有些开源项目不接受拉取请求,而只通过电子邮件发送补丁文件? ”):

由于 github 身份是随机的,我希望拉取请求是签名标签,以便我可以验证相关人员的身份。

因此,如果您希望作为推送某些提交的人来保证所有 repo 的完整性,您可以在HEAD正在推送的内容上制作并签名标签,以便上游 repo 将您视为,而不是完全“推动者”,但验证已推动的内容

于 2012-07-01T09:26:35.713 回答
5

如果推送是通过 SSH 进行的,您可以使用USER环境变量。(当然,这也适用于本地推送。)当然,这取决于用于 SSH 登录的用户对于系统的不同用户是否不同 - 例如,gitolite 就不是这种情况。(但是,gitolite 会定义GL_USER环境变量来识别推送者。)对于 HTTP,您可以尝试REMOTE_USER环境变量。

更新:总的来说,与提交的作者和提交者相比,这些信息并不是很有趣 - 例如,GitHub 显示执行特定推送的用户总是让我感到惊讶......

于 2012-07-01T09:26:27.230 回答