用GPG签名汝的提交
众所周知,使用git提交一次代码,需要提供用户名和邮箱
但是,如果汝换掉邮箱会怎么样awa
去github上捏一个空白项目试一试,汝就会发现,更换邮箱并不会影响提交代码,而且的确变更了提交身份
那么,有木有发现,这实际上可以让汝以任何用户的身份提交代码,即使是在github这种平台上?
是这样!这是git当初的设计,但是现在它显然可以被滥用:(
如何解决?
git支持使用GPG密钥来签名提交,这样就可以确保一个提交真正来自它申明的提交者
在git commit
中使用-S
选项来签名这个提交,例如git commit -S -m "test123"
,不加任何其他参数,这时候使用默认GPG密钥签名
这个默认是由opengpg定义的
如果汝的opengpg里有多个私钥,那汝可能需要使用非默认密钥签名提交
使用git config --global user.signingkey <key_id>
设置默认密钥,这样git在签名时会传递给gpg以使用给定的密钥
windows平台注意
在windows中,指定签名密钥后,在签名提交时可能会收到类似于gpg: signing failed: No secret key
这样的报错,
使用git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
手动指定gpg可执行文件位置可以解决
让git在提交时默认就对提交进行签名,那么可以尝试git config --global commit.gpgsign true
GITHUB会给可以被验证的提交打上标记,像是这样:
图片
只有github知道汝的公钥,才能校验提交中的签名
在这里https://github.com/settings/keys 提交汝的公钥
在上面提交公钥的地方,可以看到Vigilant mode
选项,这是警惕模式
开启这个模式,github会将所有无法验证签名的,但是使用了汝的邮箱的提交标记为未被签名
这包括以前的提交