Git的签名

我已经有一篇关于相同内容的文章了,但这篇是我个人的备忘录。
这是有关于在macOS + Fish上的配置步骤。

$ brew install gnupg pinentry-mac gpg-agent
$ gpg --version
gpg (GnuPG) 2.2.5
libgcrypt 1.8.2
...
$ vi alice_gpg.txt
Key-Type: RSA
Subkey-Type: RSA
Key-Length: 4096
Subkey-Length: 4096
Expire-Date: 0
Name-Real: alice
Name-Email: alice@example.com
Name-Comment: alice gpg key
Passphrase: mypassphrase
%commit
%echo done
$ gpg --gen-key --batch alice_gpg.txt
$ gpg --list-keys alice
$ gpg --armor --export XXXXXXXXXXXXX | pbcopy

由于pbcopy将密钥保存在剪贴板上,所以要将密钥注册到GitHub或其他平台。

如果想要删除键,可以按照以下步骤从密钥中进行删除。

$ gpg --list-keys alice
$ gpg --delete-secret-key alice
$ gpg --delete-key alice

魚的設置

由于我在Fish环境下使用,因此我进行以下设置初始化。

    ~/.config/fish/conf.d/gpg.fish
# Launch GPG Agent or connect to it
set -x GPG_TTY (tty)
export GPG_AGENT_INFO="$HOME/.gnupg/S.gpg-agent:0:1"
if [ ! (pgrep -x -u $USER "gpg-agent" | head -1) ]
  set -el DISPLAY
  echo "Invoking gpg-agent"
  gpg-connect-agent /bye
end

在macOS系统上,无法通过pinentry-curses使用日语。

在HomeBrew中安装的东西不能使用日语,也许可以自己编译,但是我们还是乖乖地用brew install pinentry-mac来解决吧。

切换至pinentry-mac

    ~/.gnupg/gpg-agent.conf
use-standard-socket
pinentry-program /usr/local/bin/pinentry-mac

如果gpg-agent在运行时无法生效设置,请先退出一次再尝试。

    gpgconf –kill gpg-agent

在Git中使用

我会默认使用哪个键来进行签名。根据我的情况,我希望对每个仓库进行管理,因此不使用–global选项。

git config user.signingkey XXXXXXXXXXXXXXXX
git config commit.gpgsign true
广告
将在 10 秒后关闭
bannerAds