前置#
終端 gpg 命令正常使用
生成 GPG 密鑰#
ps:要和 git config 裡的郵箱一致,查看命令如下
git config --global user.email
生成密鑰
gpg --full-generate-key
- 選擇密鑰類型:默認即可
- 選擇算法:默認
- 有效期:依自己
- 這些內容正確嗎:y
- 姓名
- 郵箱(注意用 git config 裡的)
- 註釋:依自己
- 輸入密碼
獲取密鑰信息#
gpg --list-keys
第一行開關是 pub,複製第二行的 id,在終端執行:
gpg --armor --export 複製的id
粟子:gpg --armor --export 4F113915706D141348CDC3DB5873563E6B2
執行完會獲得一段有 BEGIN 開頭,END 結尾的公鑰,複製後去 github
將公鑰粘貼進 Github#
github-> 右上角頭像 ->setting->SSH and GPG keys->New GPG key
- 起個 Title
- 將複製內容粘貼進 Key 中
- Add GPG key
利用 GPG 私鑰對 Git commit 簽名#
獲取密鑰列表
gpg --list-keys
複製 id
git config --global user.signingkey 複製的id
粟子:git config --global user.signingkey 4F113915706D141348CDC3DB5873563E6B2
在每次 commit 時,加上 - S 參數即可簽名
git commit -S -m "..."
也可以自動要求簽名
git config --global commit.gpgsign true
信任 Github 自身的 GPG 密鑰#
意義:網頁端創建倉庫沒有顯示 Verified,導致強迫症很不爽
導入 Github 自身的 GPG 密鑰
curl https://github.com/web-flow.gpg | gpg --import
24 年 Github 過期了一條密鑰,所以會導入兩條
獲取密鑰列表
gpg --list-keys
複製那條 Github 沒過期的公鑰 id,執行簽名操作
gpg --sign-key 968479A1AFF927E37D1A566BB5690EEEBB952194
輸入 y 確認簽名即可