GPG 签署旧的 git 提交是个好主意吗?

Ale*_*lyn 11 git gnupg

我刚刚意识到我忘了告诉 git 使用我的 GPG 密钥。我在没有签署的情况下做了一些提交。我应该回去签他们吗?

我不是指我是否应该签署标签,但我决定自己签署承诺。我不相信我能想出任何不这样做的理由,除了有可能是也可能不是我写的损坏的 git 历史。我相信 GitHub 不会弄乱我的 git 历史记录,而且我是大约 99% 项目的唯一作者,所以鉴于此,我应该这样做吗?

我找到了这个答案,所以我现在知道这是可能的,但从哲学上讲,我应该吗?

use*_*686 13

如果提交已经发布,你不应该出于任何目的重写它们(除了消除意外的数据泄漏),因为这会改变它们的提交 ID。(请记住,每个提交的 ID 都基于其内容其父提交的SHA-1 哈希值。)

这意味着它需要重写(和辞职)所有后续提交,并且会给已经获取任何这些提交的任何人带来麻烦。

但出于同样的原因,您不需要显式签署那些旧提交,至少不是出于数据完整性目的。由于每个提交都包含其父项的基于 SHA-1 的 ID,因此验证任何单个提交也将通过哈希链隐式验证其整个历史记录。链条长一点或短一点都没有关系。

另一方面,如果您不信任 SHA-1 的安全性,那么您应该考虑完全无用的提交签名,因为提交的文件内容由 SHA-1 哈希引用。您直接签名的唯一内容(而不是其哈希)是提交消息。