我只是意识到我忘了告诉git使用我的GPG密钥。我进行了许多提交但未签名。我应该回去给他们签名吗?
我不是在指是否应该对标签进行签名,但是我决定对提交本身进行签名。我不相信我会想到任何不这样做的理由,除了可能是也可能不是我写的git历史记录已损坏。我相信GitHub不会弄乱我的git历史,而且我是我99%的项目的唯一作者,因此鉴于此,我应该这样做吗?
我找到了这个答案,所以我现在知道这是可能的,但从哲学上来讲,应该吗?
我只是意识到我忘了告诉git使用我的GPG密钥。我进行了许多提交但未签名。我应该回去给他们签名吗?
我不是在指是否应该对标签进行签名,但是我决定对提交本身进行签名。我不相信我会想到任何不这样做的理由,除了可能是也可能不是我写的git历史记录已损坏。我相信GitHub不会弄乱我的git历史,而且我是我99%的项目的唯一作者,因此鉴于此,我应该这样做吗?
我找到了这个答案,所以我现在知道这是可能的,但从哲学上来讲,应该吗?
Answers:
如果提交已经发布,则不应出于任何目的重写它们(除去意外的数据泄漏),因为这会更改其提交ID。(请记住,每个提交的ID均基于其内容及其父提交的SHA-1哈希值。)
这意味着它将需要重写(并辞职)所有随后的提交,并且将给已经获取任何这些提交的任何人带来麻烦。
但是出于同样的原因,您不需要显式地签署那些旧的提交,至少不需要出于数据完整性的目的。由于每个提交都包含其父基于SHA-1的ID,因此验证任何单个提交也将通过哈希链隐式验证其整个历史记录。链长一点或短一点都没关系。
另一方面,如果您不信任SHA-1的安全性,则应该考虑完全不使用提交签名,因为提交的文件内容也由SHA-1哈希引用。您直接签名的唯一内容(而不是其哈希值)是提交消息。