在上下文 git 提交中,Gerrit Change-ID 和 Commit SHA-1 有什么区别?

What is the difference between Gerrit Change-ID and Commit SHA-1 in the context git commits?

当我们执行 git log 命令时,我们会看到每个提交的一些信息如下 - 提交 SHA-1(提交哈希) 作者姓名和电子邮件 日期 提交标题 提交信息 Change-ID

我想了解 1. Commit SHA-1 和 6. Change-ID.

之间的区别

Commit SHA-1(Commit hash)是一个标识提交的字符串,其定义方式是,如果重做提交(使用修改、变基或cherry-pick) 或者如果提交历史中的任何内容发生更改,则哈希将不同。因此,如果您签出一个哈希,您可以确信您签出了具有相同历史记录的完全相同的提交。更多信息在这里:https://gist.github.com/masak/2415865

Gerrit Change-Id 也是一个哈希字符串,但它不是 git 的一部分。它是稍后添加的内容以提交消息,以便 Gerrit 可以读取它。这仅由 Gerrit 使用。使用方法如下。我进行了新的提交并将其发送给 Gerrit。它有 Change-Id abc。审查时,如果此提交有问题,我必须修复它。我会这样做的方式是,修改当前提交。如果我不更改提交消息,修改将更改提交的 SHA-1 但不会更改 Change-Id。由于现在这个新提交共享相同的 Change-id,当我将它发送给 Gerrit 时,Gerrit 会知道这个新提交是更改 abc 的新版本并将它们组合在一起以方便审查。 更多信息在这里:https://git.eclipse.org/r/Documentation/user-changeid.html