提交者在git中做了一些澄清

时间:2018-01-29 19:39:40

标签: git github

git的提交者是真正做push to git的人吗? 我知道对于指定的提交,有author,另外还有commiter。我搜索并发现可以选择从多个用户推送几个提交,那么提交者是那个忙于mearge and push git的提交者?

我阅读了以下文章但仍然不清楚是否 Difference between author and committer in Git?

在帖子中写道作为答案:

assumed to be the person who committed the code提交的内容是什么?推了?

1 个答案:

答案 0 :(得分:1)

  

git的提交者是真正的推动者......?

没有

每个提交都存储一些元数据。这是最近对Git的Git存储库的提交,例如:

$ git cat-file -p HEAD | sed 's/@/ /'
tree 8ccb7d4fa49449a843b00aca64baf99feb10e2ab
parent e7e80778e705ea3f9332c634781d6d0f8c6eab64
author Junio C Hamano <gitster pobox.com> 1516742470 -0800
committer Junio C Hamano <gitster pobox.com> 1516742470 -0800

First batch after 2.16

Signed-off-by: Junio C Hamano <gitster pobox.com>

与其他答案一样, author 字符串用于描述编写相关代码的人 - 代码本身位于tree - 而提交者字符串用于描述使用git commit动词将代码存储在存储库中的人员。这与运行git push的人没有任何关系,因为您没有使用git push创建提交。

git push动词用于将现有提交(和/或其他Git对象)从一个存储库传输到另一个存储库。除了运输方向相反之外,git fetch动词做同样的事情。 (请记住,git pull只是意味着:运行git fetch,然后运行第二个Git命令,通常是git merge)如果您想记录某人的身份运行像git push这样的传输命令,您需要使用或扩充传输软件(ssh,安全Web服务器等)以便记录此信息。

请注意,创建提交的人可以完全控制进入新提交的内容,包括作者和提交者字符串。这些字符串不会自动进行身份验证。如果您希望对它们进行身份验证,则可以对消息数据提出其他要求 - 提交对象中第一个空行之后的文本。 (这不是Git本身的一部分,虽然Git知道如何运行创建或验证数字签名的PGP命令。上面的示例提交没有任何这样的数字签名。)当您接收提交和/或其他Git对象时,要么作为git push的收件人或git fetch的发起人,您可以通过Git的挂钩来控制推送收件人是否接受新对象。 (作为git fetch的发起者,您没有任何钩子,但是在获取之前和之后您都可以完全控制存储库。)

摘要

git commit动词创建新的提交对象(通常还有其他Git对象)。提交者是运行git commit的人 - 作为提交者,该人选择在此使用的字符串。作者是同一个人,除非提交者另有选择。

git push动词通常通过SSH或HTTPS激活传输系统(尽管Git只关心传输数据,你甚至可以使用git bundle将传输拆分为“写入”以及之后的“阅读“阶段,以便在穿孔卡或任何其他你喜欢的疯狂系统上传输数据”。传输系统将现有的提交和其他Git对象从一个Git携带到另一个Git。为了尽可能快地进行传输,如果两个Gits之间的连接是交互式的,那么两个Gits可以交换有关它们具有哪些提交和其他对象的信息,从而确定谁应该接收他们 don'的对象t 有。

接收方需要进行任何验证。通常,没有:如果传输本身经过身份验证,则接收方只需信任传输的身份验证。由于提交哈希ID形成Merkle tree,因此特定于传输的身份验证通常就足够了。