按 "Rebase and merge" 后验证签名消失了

Verified signatures are gone after I pressed "Rebase and merge"

所有已推送到 develop 分支的提交都表明它们已经过验证。

要合并从 developmaster 的所有内容,我决定单击一个按钮 Rebase and merge。 (我不想为 master 创建另一个新提交。)

令人惊讶的是,合并成功后,所有已验证的签名都从主服务器上消失了。

  1. 我在这里错过了什么?
  2. 我应该如何保留经过验证的签名?

当 rebase 时,更改会在 master 上重播。这会导致它们在新的父提交上“重新定位”,这将更改提交 ID(部分基于父提交 ID)。

变基还可能需要在重放提交时合并更改。即使合并是自动发生的,它也可能会更改文件的内容。文件内容是构成 commit-id 的另一个元素。

验证是通过内容和提交元数据的加密签名完成的。因此,变基将破坏该签名。

为了不破坏您的签名,您需要使用快进合并(不创建新的合并提交)。为此,您需要在本地对您的更改进行变基并对其进行签名。

或者你可以 squash-rebase,将你所有的小提交汇总到一个新的提交中,GitHub 将代表你签名。

如果验证对您很重要,那么变基通常不是一个好主意,快进合并和合并提交将更好地反映实际发生的情况以及这些更改的作者。