作者、提交者和推送者在 Git 中可以是不同的人,但 git 并没有将推送者的信息存储在日志中。
那么,我如何得到它?
你没有。上游 repo不对谁提供提交做任何假设:它可以通过电子邮件、USB 密钥上复制的差异补丁以及其他
各种传输协议。
其中一些协议(ssh、https)可能在其日志中包含您寻求的信息,但是:
gitolite-admin
也可以是您想要的任何名称,并且与真实姓名无关。正如 Linus 提到的(在“为什么有些开源项目不接受拉取请求,而只通过电子邮件发送补丁文件? ”):
由于 github 身份是随机的,我希望拉取请求是签名标签,以便我可以验证相关人员的身份。
因此,如果您希望作为推送某些提交的人来保证所有 repo 的完整性,您可以在HEAD
正在推送的内容上制作并签名标签,以便上游 repo 将您视为,而不是完全“推动者”,但验证已推动的内容
如果推送是通过 SSH 进行的,您可以使用USER
环境变量。(当然,这也适用于本地推送。)当然,这取决于用于 SSH 登录的用户对于系统的不同用户是否不同 - 例如,gitolite 就不是这种情况。(但是,gitolite 会定义GL_USER
环境变量来识别推送者。)对于 HTTP,您可以尝试REMOTE_USER
环境变量。
更新:总的来说,与提交的作者和提交者相比,这些信息并不是很有趣 - 例如,GitHub 显示执行特定推送的用户总是让我感到惊讶......