Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • GitCode
  • 帮助文档
  • Wiki
    • Docs
    • User
    • Project
    • Repo
  • gpg sign

帮
帮助文档
  • 项目概览

GitCode / 帮助文档

通知 1562
Star 123
Fork 139
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 163
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 23
  • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • Wiki 89
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
帮
帮助文档
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 163
    • Issue 163
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 23
    • 合并请求 23
  • Pages
  • DevOps
    • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 89
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 流水线任务
  • 提交
  • Issue看板

gpg sign

最后修改来自于BaiXuePrincess 11月 19, 2021
页面历史

GPG签名提交

您可以使用 GPG 密钥对在 GitCode 代码仓库中的 Git 提交进行签名。 如果可以验证提交者的身份,则已签名的提交将标记为 已验证,为了验证提交者的身份,GitCode 需要他们的公共 GPG 密钥。

目前尚不支持通过 GPG 验证标签。

GPG 签名

GitCode 使用其自己的密钥环来验证 GPG 签名,它不访问任何公钥服务器。

对于要由 GitCode 验证的提交:

  • 提交者必须具有 GPG 公钥/私钥对
  • 提交者的公钥必须已上传到其 GitCode 帐户
  • GPG 密钥中的一封电子邮件必须与提交者在 GitCode 中使用的经过验证的电子邮件地址匹配
  • 提交者的电子邮件地址必须与 GPG 密钥中验证的电子邮件地址匹配

生成 GPG 密钥

如果您还没有 GPG 密钥,建议您参考以下步骤生成您的 GPG 密钥:

  1. 为您的操作系统安装 GPG。如果您的操作系统安装了gpg2,在下面的命令中用gpg2替换gpg即可。

  2. 使用以下命令生成私钥/公钥对,并根据系统引导一步步设置:

    gpg --full-gen-key 

    注意: 在某些情况下,例如 Windows 和其他 macOS 版本上的 Gpg4win,此处的命令可能是gpg --gen-key .

  3. 第一步需要选择使用哪种算法,选择所需的类型或按Enter 键选择默认类型(RSA 和 RSA):

    Please select what kind of key you want:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (sign only)
       (4) RSA (sign only)
    Your selection? 1 
  4. 下一步是密钥长度,我们建议您选择4096 :

    RSA keys may be between 1024 and 4096 bits long.
    What keysize do you want? (2048) 4096
    Requested keysize is 4096 bits 
  5. 接下来指定密钥的有效期,由您自己设置,您也可以使用永远不会过期的默认值:

    Please specify how long the key should be valid.
             0 = key does not expire
          <n>  = key expires in n days
          <n>w = key expires in n weeks
          <n>m = key expires in n months
          <n>y = key expires in n years
    Key is valid for? (0) 0
    Key does not expire at all 
  6. 接下来通过输入y确认您给出的答案是正确的:

    Is this correct? (y/N) y 
  7. 接下来输入您的真实姓名,与此密钥关联的电子邮件地址(应与您在 GitCode 中使用的经过验证的电子邮件地址匹配)和可选注释(按Enter跳过):

    GnuPG needs to construct a user ID to identify your key.
    
    Real name: Mr. Robot
    Email address: <your_email>
    Comment:
    You selected this USER-ID:
        "Mr. Robot <your_email>"
    
    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 
  8. 接下来设置一个强密码,然后输入两次以确认

  9. 到这一步您的 GPG 密钥已经生成,您可以使用以下命令列出刚刚创建好的私密 GPG 密钥:

    gpg --list-secret-keys --keyid-format LONG <your_email> 

    将<your_email>替换为您在上面输入的电子邮件地址。

  10. 复制以sec开头的 GPG 密钥 ID, 在以下示例中,即30F2B65B9246B6CA :

    sec   rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]
          D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA
    uid                   [ultimate] Mr. Robot <your_email>
    ssb   rsa4096/B7ABC0813E4028C0 2017-08-18 [E] 
  11. 导出该 ID 的公共密钥(替换上一步中的密钥 ID):

    gpg --armor --export 30F2B65B9246B6CA 
  12. 最后一步,复制公钥并将其添加到您的个人资料设置中即可

在您的账号中添加 GPG 密钥

注意: 添加密钥后,就无法对其进行编辑,只能将其删除。如果粘贴无效,则必须删除有问题的密钥并重新添加。

您可以在个人资料的设置中添加 GPG 密钥:

  1. 点击右上角的头像,然后转到**"设置**

  2. 点击GPG 密钥,然后将您的公共密钥粘贴到"密钥"框中

  3. 最后,单击添加键将其添加到 GitCode,您将能够看到其指纹,相应的电子邮件地址和创建日期

在 Git 中使用 GPG 密钥

创建 GPG 密钥并将其添加到您的帐户之后 ,就可以开始在 git 中开始使用您的 GPG 密钥了。

  1. 使用以下命令列出您刚刚创建的私密 GPG 密钥:

    gpg --list-secret-keys --keyid-format LONG <your_email> 

    将<your_email>替换为您在上面输入的电子邮件地址

  2. 复制以sec开头的 GPG 密钥 ID,在以下示例中,即30F2B65B9246B6CA :

    sec   rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]
          D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA
    uid                   [ultimate] Mr. Robot <your_email>
    ssb   rsa4096/B7ABC0813E4028C0 2017-08-18 [E] 
  3. 告诉 Git 使用该密钥对提交进行签名:

    git config --global user.signingkey 30F2B65B9246B6CA 

    不要忘了用您的 GPG 密钥 ID 替换30F2B65B9246B6CA

  4. (可选)如果 Git 使用gpg并且出现诸如secret key not available或gpg: signing failed: secret key not available ,请运行以下命令更改为gpg2 :

    git config --global gpg.program gpg2 

GPG 签名提交

创建 GPG 密钥并将其添加到您的帐户之后 ,您可以开始对提交进行签名:

  1. 像以前一样提交,唯一的区别是添加了-S标志:

    git commit -S -m "My commit msg" 
  2. 按提示输入 GPG 密钥的密码

  3. 推送至 GitCode 并检查您的提交是否已通过验证

如果您不想在每次提交时都键入-S标志,则可以告诉 Git 自动签名您的提交:

git config --global commit.gpgsign true 

验证提交

  1. 在项目或合并请求中,切换到提交选项卡,签名的提交将显示包含" Verified"或" Unverified"的徽章,具体取决于 GPG 签名的验证状态

    Signed and unsigned commits

  2. 通过单击 GPG 徽章,将显示签名的详细信息

    Signed commit with verified signature

撤销 GPG 密钥

撤消密钥将取消验证已签名的提交,使用此密钥验证的提交将变为未验证状态。撤销此密钥后,将来的提交也将保持不变. 如果您的密钥已被盗用,则应使用此操作。

撤销 GPG 密钥:

  1. 点击右上角的头像,然后转到 设置
  2. 点击GPG 键标签
  3. 单击您要删除的 GPG 键旁边的撤消

删除 GPG 密钥

删除密钥不会取消已提交签名的验证状态,使用此密钥验证的提交将保持验证状态。删除此密钥后,只有未提交的才会保持未验证状态。要取消验证已签名的提交,您需要从您的帐户中撤销关联的 GPG 密钥 。

要从您的帐户中删除 GPG 密钥,请执行以下操作:

  1. 点击右上角的头像,然后转到 设置
  2. 点击GPG 键标签
  3. 单击您要删除的 GPG 密钥旁边的删除图标

拒绝未签名的提交

您可以将您的项目配置为拒绝不是通过推送规则进行 GPG 签名的提交

克隆仓库

快速访问

  • 首页
  • 组织
    • 子组织
    • 申请入驻
  • 项目
    • 徽章
    • 批量编辑
    • 新建项目
    • 描述模板
    • 文件查找
    • 合并请求
      • 允许协作
      • 创建合并请求
      • Cherry-pick
      • 快进合并
      • 解决冲突
      • 还原
      • 评审及管理
      • Squash合并
      • 合并请求版本
      • 草稿
    • 项目成员
    • 导入
      • Github
      • URL
    • Releases
    • 代码仓库
      • 分支
      • Git属性
      • Blame
      • 文件历史记录
      • 仓库镜像
      • 保护分支
      • 保护Tag
      • Git LFS
      • 减少仓库大小
      • GPG签名提交
      • 文件编辑
      • WebIDE
    • 项目设置
    • 与群组共享项目
    • wiki
    • 代码片
    • Pages
      • Hugo
      • Mdbook
      • html
  • Issues
    • 机密Issue
    • 关联Issue
    • 截止日期
    • 看板
    • 操作Issue
    • 标签
    • 管理Issue
    • 里程碑
    • Issue排序
  • API
    • Runners Api
  • CI / CD
    • Pipelines
      • 流水线计划
      • 设置
    • 变量
    • Runners
    • .codechina-ci.yml
      • .codechina-ci.yml 参考
      • 语法验证
  • 用户
    • 举报用户
    • 用户账号
      • 登录日志
      • 用户权限
      • 个人访问令牌
      • 个人偏好
    • Notebook
    • 探讨
    • SSH密钥
    • 快捷键
    • Markdown
    • 电子邮件通知
    • 快速操作
      • 自动填充
    • 预留命名空间
    • 搜索
    • 时间跟踪
    • 待办事项
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7