Windows 下 Git 配置 GPG 秘钥

 Technique  8 comments

因为工作用 Mac 比较多,很多软件并未在 Windows 下配置过,然而实际使用时发现和 Mac 存在不少区别,因此记录一下遇到的问题和解决办法。

Git

首先在系统部署 Git 工具,Git 工具在官网有一个,也可以使用 GitHub 提供的 GUI 工具,不过为了和 Mac 上的体验保持一致,下载官网的 CLI 工具。

安装

打开官网下载安装即可,点击此处快速下载。

配置

根据习惯配置(右键 Option 即可) Git 命令行参数,比如推荐将字体调整至合适(默认大小在 2K 分辨率下偏小),配置字符集等,不再赘述。

问题及处理

执行 git add 命令时可能会遇到如下警告。

warning: LF will be replaced by CRLF in docker-compose.yaml.
The file will have its original line endings in your working directory

这是因为在 Windows 下和 UNIX 系统的换行符编码不同导致的。

这个区别最后的影响就是

解决办法

在 Windows 上可以直接使用 Git 提供的转换功能即可。

$ git config --global core.autocrlf true

PGP

配置 GPG 秘钥,打开官网下载 GPG4Win 即可,这个工具部署比较简单。

配置

安装 Git 后推荐直接在 Git CLI 中进行操作。

$ gpg --full-generate-key

小贴士:若使用的 GPG 工具低于 2.1.17 ,请勿直接使用此命令。需要使用 gpg --default-new-key-algo rsa4096 --gen-key 命令。

完整示例步骤如下:

$ gpg --full-generate-key
gpg (GnuPG) 2.2.17-unknown; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

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?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
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) 1y
Key expires at 2020年11月15日 12:28:05
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: Kane You
Email address: diracsvip@gmail.com
Comment: Windows PC
You selected this USER-ID:
    "Kane (Windows PC) <example@gmail.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 642FA2164F414243 marked as ultimately trusted
gpg: directory '/c/Users/Kane/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/c/Users/Kane/.gnupg/openpgp-revocs.d/000000F476BB0BD6DD28D1A00000000000000000.rev'
public and secret key created and signed.

pub   rsa4096 2019-11-17 [SC] [expires: 2020-11-16]
      0000000000000000000027FDEFF476BB0B000000
uid                      Kane (Windows PC) <example@gmail.com>
sub   rsa4096 2019-11-17 [E] [expires: 2020-11-16]

小贴士:以上为操作示例,需要注意的是,根据 GitHub 的生成指导,必须使用 4096 为 RSA 算法的秘钥才能在 GitHub 上使用。详细可参照官方说明

关联

为 Git commit 关联 GPG 秘钥。

$ git config commit.gpgsign true

查看当前所有秘钥

$ gpg --list-secret-keys --keyid-format LONG

关联指定秘钥

$ git config --global user.signingkey 0000000000000000000027FDEFF476BB0B000000

小贴士:若只想对当前项目配置仅需去掉 --global 参数即可。

查看秘钥详情

$ gpg --export --armor 0000000000000000000027FDEFF476BB0B000000

附录

参考链接

回复
  1. 失落的世界

    博主的评论是什么插件?能分享一下嘛?

    Chrome 78 Android Oreo 回复
  2. 失落的世界

    为什么很多页面都404了??

    360浏览器 2 Android Nougat 回复
    1. Kane
      @失落的世界

      最近博客在更新架构和文章格式,预计几日后可全部更新完毕。

      Chrome 78 macOS Catalina 回复
  3. Switch

    博主的浏览器识别功能是怎么实现的?是插件么,可以分享一下么?

    Firefox Focus 8.1.3 iOS 13 回复
    1. Kane
      @Switch

      不是插件,是整合至主题内的,具体实现可参考修改版的 Access 项目。

      Chrome 78 macOS Catalina 回复
  4. 不平

    刚才我评论失败了是为什么?用的浏览器是夸克浏览器国际版。

    UCTurbo 1.8.1.900 Android Oreo 回复
    1. Kane
      @不平

      抱歉,之前在进行后端服务的调整,现在已经全部恢复正常了。

      Chrome 78 macOS Catalina 回复
    2. 方舟
      @不平

      我刚才用平板也评论失败了,现在好像恢复了。

      Edge 42.0.4.4052 Android 10 回复