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

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

我刚刚意识到我忘了告诉 git 使用我的 GPG 密钥。我做了许多提交但都没有签名。我应该回去签名吗?

我并不是说我是否应该签署标签,而是我决定签署提交本身。我认为除了有损坏的 git 历史记录(可能是也可能不是我写的)之外,我想不出任何不这样做的理由。我相信 GitHub 不会弄乱我的 git 历史记录,而且我是 99% 项目的唯一作者,因此,鉴于此,我应该这样做吗?

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

答案1

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

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

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

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

相关内容