Git中author和committer的区别是什么?
我刚刚在GitHub上遇到了以下提交:Git中author和committer的区别是什么?,git,github,Git,Github,我刚刚在GitHub上遇到了以下提交: 一个人如何在同一个提交中拥有多个作者呢?不是多个作者。一个是作者,另一个是提交人 如果你要做一个克隆,你可以清楚地看到它: $ git cat-file -p 0a0b150668daa3c6f016 tree 91edcb411b7cd0708c1f5bb05621846146c9425a parent 6b9ffe3653fe59f035b01ba1f46b5f2650be00ca author Logan Kearsley <chronosu
一个人如何在同一个提交中拥有多个作者呢?不是多个作者。一个是作者,另一个是提交人 如果你要做一个克隆,你可以清楚地看到它:
$ git cat-file -p 0a0b150668daa3c6f016
tree 91edcb411b7cd0708c1f5bb05621846146c9425a
parent 6b9ffe3653fe59f035b01ba1f46b5f2650be00ca
author Logan Kearsley <chronosurfer@gmail.com> 1308937685 -0700
committer Felix Geisendo╠Иrfer <felix@debuggable.com> 1309117893 +0200
Slight but definite & consistent performance boost.
$git cat文件-p 0a0b150668daa3c6f016
树91edcb411b7cd0708c1f5bb05621846146c9425a
母公司6b9ffe3653fe59f035b01ba1f46b5f2650be00ca
作者Logan Kearsley 1308937685-0700
提交人Felix Geisendo╠crmk_RFER1309117893+0200
轻微但明确且一致的性能提升。
这不是真正的两位作者,而是一位作者和一位提交人。这两个字段有不同的含义。作者是创建内容的人,提交者是提交内容的人。当您执行正常的提交时,您两个都是。(两者都带有相关的电子邮件和时间戳。)
但它们可以在几个关键方面有所不同:
- /-这一对允许您将提交内容转换为补丁,通常通过电子邮件提交,然后让其他人应用它们。你仍然是作者;应用它们的人是提交者。这绝对是github上发生的事情
- ,-这些基本上都是历史重写的变体,从单个提交到分支的某些历史,再到整个历史。他们可能会修改提交者信息——特别是,他们总是重写提交者时间戳。原始作者保留在原处(在默认操作模式下),如果作者也是进行重写的作者,则他们的姓名和电子邮件保留在原处,但时间戳自然不同
像GitHub和GitLab这样的Git web界面 在这样的系统中,合并补丁时,作者可能与提交人不同,也可能与提交人不同,这取决于repo设置 由于Git(Hub | Lab)在同一台机器上同时拥有上游和fork存储库,因此它可以自动执行您也可以在本地执行的任何操作:
- 创建合并提交
不生成作者!=提交人
保持SHA或新提交的完整性,并创建新提交:
历史上,这是GitHub上第一个可用的方法 在本地,这是通过* Merge commit (committer == author == project maintainer) |\ | * Feature commit (committer == author == contributor) |/ * Old master (random committer and author)
完成的 这将为每个pull请求生成两个提交,并在git历史记录中保留一个forkgit merge--no ff
- 在
虽然这在原则上不是强制性的,甚至在默认情况下git rebase也不会在本地完成,但GitHub也会对提交进行黑客攻击,以设置提交者==按下合并按钮的人 这样做的原因是,它向项目维护人员提供了责任 git树现在看起来像:master
这与git apply的电子邮件补丁非常相似* Feature commit (committer == maintainer, author == contributor) | * Old master (random committer and author)
- 通过“合并”按钮上的下拉菜单选择合并时的方法
- 所有者可以在repo设置上启用或禁用方法
简而言之,当您向gihub/gitlab/etc托管的回购执行拉取请求,并且被回购的维护者接受时,您是作者,他/她是提交者
当你git克隆这个repo时,使用
git cat file-p xxx_hash
将显示author&committer消息。实际上你会注意到,一个人是作者,一个人是提交人……准确地说,通过重写历史,可能的副本可以修改一切——包括作者信息。几乎从未在实践中使用过,但仍然有可能。@Chirantan:这里的其他Git手册页链接基本上都是这样,因为kernel.org已经关闭了,而且还没有把手册页放回去。不值得把每一个都重写一遍。只需使用mangit格式补丁
。