因此,有人对我的工作进行了审查,他告诉我,我应该始终对自己的提交和标签进行加密签名。当被问到为什么时,他不知道向我解释这件事,并说“这是一件好事”。

试图避免出现明显的黑猩猩情形,我为什么要这么做呢?

真的有这么多明显的优点而没有缺点吗?

有什么实际原因会使我想要签署我所做的每个提交和标记?

评论

我认为是这样,所以您可以通过书面方式将提交与您联系。不过,我之前从未使用git或任何其他源代码控制系统签署过一次提交。如果您的同龄人认为存在欺诈性欺诈的风险,则您的公司可能存在更大的安全问题。

@James:这不是公司的工作,但我确实参与了一些开放源代码和封闭源代码项目。

@James:“更大的安全问题” ---怎么样?签名是解决它们的一种技术方法,不是吗?

mikegerwitz.com/papers/git-horror-story.html是签名提交和标签用例的起点。

@James使用SVN帐户提交时,请签署提交。当您使用git global config提交时,您是确认您是作者的唯一权限。

#1 楼

(这主要基于《 Git恐怖故事:带有签名提交的存储库完整性》,非常好阅读,而且提供的信息比我回答的要多。)

有很多方法可以git存储库可能会受到威胁(这不是安全缺陷,只是生活中的事实,因此不应避免使用git)。例如,某人可能已将您声称是您推送到您的存储库。或就此而言,某人可能已经推到声称自己是您的其他人的存储库中(某人可能会推到声称自己也是您的自己的存储库中)。这只是DVCS的一部分。

仅作为示例:

$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com


在那里,我将git配置更改为假装我是你。现在我可以提交,让那些提交以某种方式进入生产版本,看起来您已经完成了。



签署了提交(和标签),可以证明某些提交和标签来自您(未签名的内容不应该进入生产版本)。这实际上就是所有这些的关键-通过签署提交,您已经说过这是您的工作。

“您的工作”方面在偶尔受到Linux内核(以及git)影响的情况下尤其重要。版权诉讼。通过签署承诺,您表示您有权使用该软件-它会跟踪源。可能是您无权访问被声明为版权的来源,并且该声明是毫无根据的。可能是该公司忘记了您几年前为他们工作,并在他们的指导下为内核增加了材料,或诸如此类。

关于是否应该签署每个提交,存在一些争论。从GPG签署git commit? (早在09年),莱纳斯写道:


签署每个提交完全是愚蠢的。这仅意味着您将其自动化,并且使签名价值降低。它也没有增加任何实际价值,因为SHA1的git DAG链的工作方式,您只需要一个签名就可以使该提交有效地覆盖所有提交。因此,对每个提交进行签名都只是忽略了要点。


也可以在此处阅读有关git签名的更多信息。



似乎已经达成共识,认为签署提交是不必要的,但是签署标签非常好。顶部链接的博客文章表明,无论如何都应签名。就像我说的那样,关于每次提交是否必要都存在争议。

“签署每次提交”辩论的关键可能与您使用的工作流程有关。大多数人在其本地存储库中进行大量提交,然后将其推送。标记最终集合就足够了(假设,即,确保所有更改都是正确的)。如果您在许多单个提交都在四处移动的环境中工作,则标记和提交之间的区别会变得越来越少……明显-签署提交可能会变得更加有用。

评论


这可能就足够了(只标记最后一个),但是为什么不标记每个提交呢?

– Hayd
16-4-29在22:12



作为一个不使用标签的懒散杂种,我反对前面的评论。在我工作站上的git config中,我有commit.gpgsign = true,我可以确定没有缺点。虽然这可能很愚蠢,但似乎并不太昂贵。

– pnovotnak
16-10-12在20:52

我要在这个上使用@pnovotnak,为什么不这样做呢?我的意思是我签署了自己的提交,而另一个开发人员不在同一个项目中,谁在乎呢?但是,如果黑客试图窃取我的身份,我可以指出签名。在我看来,签名仅具有优势。我确实同意您的签名获得的价值较低,但是您无需考虑就可以进行交易。它基本上是免费的安全性。

– Jappie Kerk
17年1月14日在14:03

我个人认为签署每个承诺都是一件好事。我可以肯定的是,带有我的签名的内容来自我,而用香草git冒充作者是微不足道的。我宁愿将其称为免费验证,否则就是您认为的那个人,而不是安全性。

– Berto
2017年9月7日14:08



@JosiahYoder。不,Github不会拒绝推送,因为电子邮件不在他们的服务中。假设您将代码托管在另一个服务(即Bitbucket)上,并且想将存储库移至另一个提供程序。这将防止用户转移存储库(多个用户进行多次提交)或创建镜像等。这是DVCS的功能。

– Ricky Notaro-Garcia
18-10-22在16:24