在 Git 提交中,Gerrit Change-ID 和 Commit SHA-1 有什么区别?

11

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

我想了解1.提交SHA-1和6.更改标识符之间的区别。


这份文档比我能做的更好地解释了:https://git.eclipse.org/r/Documentation/user-changeid.html - user743382
2
可能会有帮助。链接 - diganta
1个回答

15
提交SHA-1(提交哈希)是一个字符串,用于标识提交,并以一种方式定义,如果提交被重做(使用修补程序、rebase或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

那么提交的 SHA-1 是由 Git 系统生成的,而 Change-ID 是由 Gerrit 系统生成的,对吗? - Darshan L
没错。通过gerrit git-hook,change-id也可以自动添加到变更提交消息中。这可以安装在您的机器上。 - gus3001

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接