What is GPG ?
About commit signature verification – GitHub Docs
Using GPG or S/MIME, you can sign tags and commits locally. These tags or commits are marked as verified on GitHub so other people can be confident that the changes come from a trusted source. — GitHub
大家可能偶爾在協作 Commit 時,git global 的 config 設定下,有時串味(?了,不小心帶入到別人的名字來做 Commit ,現在有了 GPG 可以避免這個問題,當你送出 Commit 時就能驗證,這筆 Commit 確實是你本人、你的電腦發出的,如下圖這個樣式,會帶上一個 “Verifie” 字樣。

How To GPG ?
本教學只包含 Mac OS 範例
確認
首先透過以下指令來確認是否已經有 GPG key
gpg --list-secret-keys --keyid-format=long
安裝
若是電腦中沒有 GPG 安裝過,可以使用 brew 安裝
brew install gnupg
or 下載使用
確認沒有 GPG key 後,請新增一個!
生成 GPG Key
透過以下指令生成
gpg --full-generate-key

預設選擇第一個即可
RSA 金鑰的長度可能介於 1024 位元和 4096 位元之間.
你想要用多大的金鑰尺寸? (3072)
這邊我會直接 enter 讓他選擇預設位元,但如果你有自己的想法也可以選擇其他位元數~
請指定這把金鑰的有效期限是多久.
0 = 金鑰不會過期
<n> = 金鑰在 n 天後會到期
<n>w = 金鑰在 n 週後會到期
<n>m = 金鑰在 n 月後會到期
<n>y = 金鑰在 n 年後會到期
金鑰的有效期限是多久? (0)
可以選擇鑰匙的有效期限,一樣預設 enter 是不過期
以上正確嗎? (y/N) y
正確打 y ~
GnuPG 需要建構使用者 ID 以識別你的金鑰.
輸入自訂的 ID 資訊,以及 email,這邊很重要的是,你的 email 輸入要是使用跟你 commit 時所用的 email 同一個,不然無法配對做驗證,假如說你 git config email 設定 tilda@example.com,在這裡的 email 也請輸入 tilda@example.com。
註釋,可寫可不寫啦XD,就是一個備註的概念,完整確認完成後會再詢問一次以上資料是否正確,打 O 代表確認正確後,會跳出這個視窗:

這個密語會在你配對時用到,請不要亂輸入或忘記囉。
接著就會建立好你的 GPG Key,透過第一筆指令來查找這筆 Key:
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 SEC Key ID:3AA5C34371567BD2
並且執行以下指令來取得公鑰資訊
$ gpg --armor --export 3AA5C34371567BD2
# Prints the GPG key ID, in ASCII armor format
複製 GPG 密鑰,從 -----BEGIN PGP PUBLIC KEY BLOCK-----
開始,到 -----END PGP PUBLIC KEY BLOCK-----
結束。
貼到你的 GitHub 中的 GPG Key 即可。




提交給 Git GPG
接下來要讓知道,你的 GPG 簽章是簽誰的名字,剛剛透過指令取得 GPG Key ID 後使用以下指令設置:
$ git config --global user.signingkey 3AA5C34371567BD2
會將全域的 commit 配置成已經簽名的 GPG Key 送出,或是你想針對特定的 commit 簽章也可以這麼做:
$ git commit -S -m "your commit message"
# Creates a signed commit
在任何地方預設啟用簽名
git config --global commit.gpgsign true
驗證過的樣式如下:

大功告成!
這樣就配置完成了,後續還有多個帳號怎麼配置 GPG ? 那就是另一個故事了
沒有啦,就是配置好 email 對應 GPG Key 之後,你在簽章提交時選對 ID 提交即可!