LoginSignup
1
1

More than 5 years have passed since last update.

Gitの署名

Last updated at Posted at 2018-04-06

同じ内容の記事が既にありますが自分用の備忘録です.
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等にキーを登録します.

キーを削除したいときは以下の手順で、secretから削除します.

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

Fishでの設定

自分の環境は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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1