我正在创建一个基于 Web 的 PHP 客户端,用于使用 Git 管理网站内容。我想将提交与登录管理面板的各个人员相关联。我知道我可以这样做:
git commit --message="foo" --author="John Doe <john@example.com>"
Run Code Online (Sandbox Code Playgroud)
但是,您也可以通过管理面板推送到远程存储库(在我的例子中,托管在 GitHub 上)。我似乎无法使用以下内容设置提交者的姓名/电子邮件:
git push origin master --author="John Doe <john@example.com>"
Run Code Online (Sandbox Code Playgroud)
...所以在 GitHub 中,作者是 John Doe,但提交者是我:
我注意到提交者是基于 Git 配置的。所以我可以改变它并得到正确的结果:
我的问题是,我需要这样做吗:
git config user.name {{ panel user name }}
git config user.email {{ panel user email }}
git push origin master
Run Code Online (Sandbox Code Playgroud)
...每次有人推送到存储库时,或者有更好的方法吗?我喜欢你如何在 中指定作者git commit。这也能以某种方式实现git push吗?
创建者和提交者实际上是作为提交对象本身的一部分存储的。因此,如果您想自定义作者和提交者名称,则需要在运行时进行git commit。根据官方文档,您可以通过这四个环境变量来设置作者和提交者信息:
GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
Run Code Online (Sandbox Code Playgroud)
git -c user.name="John Doe" -c user.email="john@example.com" commit ...
Run Code Online (Sandbox Code Playgroud)
我相信使用脚本中的环境变量更为典型,但我不确定为什么(或者,真的,如果)是这种情况。
请注意,该push命令只是将现有提交对象(包括其存储的作者和提交者信息)发送到服务器。你不能在推送时更改作者或提交者,至少据我所知不能使用标准 git。我不确定您如何设法将--author选项传递给git push,但它没有在文档中列出。