NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 7.4 签署工作 Git 虽然是密码级安全的,但它不是万无一失的。 如果你从因特网上的其他人那里拿取工作,并且想要验证提交是不是真正地来自于可信来源,Git 提供了几种通过 GPG 来签署和验证工作的方式。 ### 7.4 1 GPG 介绍 {#_gpg_介绍} 在开始签名之前,需要先配置 GPG 并安装个人密钥。 **查看密钥** ``` $ gpg --list-keys ``` **生成密钥** ``` $ gpg --gen-key ``` ### 7.4.2 签署提交 通过设置 Git 的`user.signingkey`选项来签署。 ``` git config --global user.signingkey 0A46826A ``` 如果已经设置好一个 GPG 私钥,可以使用它来签署新的标签。 所有需要做的只是使用`-s`代替`-a`即可: ``` $ git tag -s [tag] -m '[comment]' ``` 如果在那个标签上运行`git show`,会看到 GPG 签名附属在后面: ``` $ git show [tag] ``` **验证标签** 要验证一个签署的标签,可以运行`git tag -v [tag-name]`。 这个命令使用 GPG 来验证签名。 为了验证能正常工作,签署者的公钥需要在你的钥匙链中。 ``` $ git tag -v [tag] ``` **签署提交** 增加一个`-S`到`git commit`命令。 ``` $ git commit -a -S -m '[comment]' ``` `git log`也有一个`--show-signature`选项来查看及验证这些签名。 ``` $ git log --show-signature ``` 在 Git 1.8.3 及以后的版本中,`git merge` 与 `git pull` 可以使用`--verify-signatures`选项来检查并拒绝没有携带可信 GPG 签名的提交。 ``` $ git merge --verify-signatures [branch] ``` 也可以给`git merge`命令附加`-S`选项来签署自己生成的合并提交。 ``` $ git merge --verify-signatures -S [branch] ```