#7: Git の設定、GPG key を GitHub に登録

GPG でのコミットへの署名、必要な手順が多いですね。

今日やったこと(Done)

$ gpg --version
gpg (GnuPG) 2.2.21
$ gpg --full-generate-key
# プロンプトに沿って入力していく
# RSA - RSA
# 4096 bit
# id: ryocalm
# mail: <my mail address>
$ gpg --list-secret-keys --keyid-format LONG
$ gpg --armor --export <GPG key ID> | pbcopy

Git の設定。

# 自分のハンドルネーム、メールアドレスを設定した。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
# 改行コードの自動変換を無効にする。
$ git config --global core.autocrlf false
# GPG key の設定
$ git config --global user.signingkey <GPG key ID>

gpg-agent, pinentry-mac のインストール。

$ brew install gpg-agent pinentry-mac

エラーが出たけれど、gpg-agent はインストールできたようだった。あらためて pinentry-mac のインストールを試みる。

$ brew install pinentry-mac

~/.gnupg/gpg-agent.conf を作成して以下の内容を入力する。

use-standard-socket
pinentry-program /usr/local/bin/pinentry-mac

そして clone したリポジトリに変更を加えて署名付きでコミットしてみたがエラーとなった。何か間違ったのだとしたら GPG key の作成だろうか。日を改めてまた試してみよう。

わかったこと(Fact)

Git

  • Git の設定はシステム全体、ユーザーごと、リポジトリごとの 3 段階ある。
    • git config--system をつけるとシステム全体、/etc/gitconfig というファイルに書き込まれる。
    • git config--global をつけるとユーザーごと、~/.gitconfig or ~/.config/git/config というファイルに書き込まれる。
    • git config--local をつけるとリポジトリごと、リポジトリ内のファイル .git/config に書き込まれる。
  • それぞれ対象範囲が狭い方の設定が優先される。--system/etc/gitconfig よりも --local.git/config の内容が適用される。
  • Git で使うエディタを設定できる。

設定方法

Now that your identity is set up, you can configure the default text editor that will be used when Git needs you to type in a message. If not configured, Git uses your system’s default editor.

If you want to use a different text editor, such as Emacs, you can do the following:

$ git config --global core.editor emacs
  • Git のコマンドについて help を見るやり方は 3 通り。
    • git help <verb><verb> は例えば add など)
    • git <verb> --help
    • man git-<verb>
  • もしフルの man ページではなく、ちょっとオプションを確認したいだけならコマンドの後に -h をつければよい。
    • 例えば git add -h
  • ファイル名の大文字と小文字を区別するかどうか設定できる。
    • $ git config --global core.ignorecase false

GPG

GPG key の Git への設定

GPG キーのリストから、使いたい GPG キーの ID をコピーしてください。以下の例では、GPG キーの ID は 3AA5C34371567BD2 です:

$ gpg --list-secret-keys --keyid-format LONG
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10

GPG 署名キーを Git に設定するには、以下のテキストの GPG キー ID を使いたいものに置き換えてペーストしてください。この例では、GPG キー ID は 3AA5C34371567BD2 です。

$ git config --global user.signingkey 3AA5C34371567BD2

from: Git へ署名キーを伝える - GitHub ヘルプ

参考文献(References)

Git

GPG

その他

次にやること(Next)