如何添加并签名Git note并推送至启用GPG校验的BitBucket仓库
Git Note 带签名推送解决方案
问题根因
Git Note的增删改操作会生成独立的提交,归属于refs/notes/commits引用,BitBucket开启全局提交签名强制校验后,所有引用下的提交都需要附带有效GPG签名,未签名的note提交会被预接收钩子拦截。
操作步骤
第一步:完成本地GPG签名基础配置
先确认当前Git环境已绑定正确的GPG密钥,执行以下命令配置(构建机场景建议配置仓库级参数):# 配置仓库级用户名(与GPG密钥绑定的用户名一致) git config --local user.name "你的用户名" # 配置仓库级邮箱(与GPG密钥绑定的邮箱一致) git config --local user.email "你的邮箱" # 配置要使用的GPG密钥ID git config --local user.signingkey 你的GPG密钥ID # 开启提交自动签名 git config --local commit.gpgsign true # 无交互构建场景添加GPG_TTY环境变量,避免密码弹窗阻塞 export GPG_TTY=$(tty)第二步:生成带GPG签名的Git Note
git notes命令原生支持-S/--gpg-sign参数,可在添加note时直接对对应提交签名:git notes append --file=notes.txt -S若本地已生成未签名的note提交,先重置本地note引用后再重新添加:
# 重置本地notes引用到远程最新版本,清除未签名的本地变更 git update-ref refs/notes/commits origin/refs/notes/commits # 重新生成带签名的note git notes append --file=notes.txt -S第三步:推送note到远程仓库
执行原有推送命令即可,签名后的note提交会通过BitBucket的校验:git push origin 'refs/notes/*'
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

