Sign your Git commits to verify your identity on git.datawords.hk簽署你的 Git commit 以驗證你在 git.datawords.hk 上的身份签署你的 Git commit 以验证你在 git.datawords.hk 上的身份git.datawords.hk であなたの身元を確認するために Git コミットに署名しましょうLagdaan ang iyong mga Git commit para i-verify ang iyong identity sa git.datawords.hk
Make sure GPG is installed on your system:確認你的系統已安裝 GPG:确认你的系统已安装 GPG:システムに GPG がインストールされていることを確認してください:Siguraduhing naka-install ang GPG sa iyong system:
macOS:
$ brew install gnupg
Windows (Git Bash):
GPG comes bundled with Git for Windows. No extra installation needed.GPG 已內建於 Git for Windows 中,無需額外安裝。GPG 已内置于 Git for Windows 中,无需额外安装。GPG は Git for Windows に同梱されています。追加のインストールは不要です。Kasama na ang GPG sa Git for Windows. Hindi na kailangan ng karagdagang installation.
Linux (Debian/Ubuntu):
$ sudo apt install gnupg
Verify the installation:驗證安裝:验证安装:インストールを確認してください:I-verify ang installation:
$ gpg --version
gpg (GnuPG) 2.4.x
...
Run the following command to generate a new GPG key pair:執行以下指令產生新的 GPG 金鑰對:运行以下命令生成新的 GPG 密钥对:次のコマンドを実行して新しい GPG 鍵ペアを生成します:Patakbuhin ang sumusunod na command para gumawa ng bagong GPG key pair:
$ gpg --full-generate-key
You will be prompted with several options. Choose the following:系統會提示你選擇以下選項:系统会提示你选择以下选项:いくつかのオプションが表示されます。以下を選択してください:Magkakaroon ng ilang mga pagpipilian. Piliin ang mga sumusunod:
(1) RSA and RSA (default)金鑰類型:選擇 (1) RSA and RSA(預設)密钥类型:选择 (1) RSA and RSA(默认)鍵の種類:(1) RSA and RSA(デフォルト)を選択Uri ng key: Piliin ang (1) RSA and RSA (default)4096 for maximum security金鑰大小:輸入 4096 以獲得最高安全性密钥大小:输入 4096 以获得最高安全性鍵のサイズ:最大のセキュリティのために 4096 を入力Laki ng key: Ilagay ang 4096 para sa pinakamataas na seguridad1y for 1 year, or 0 for no expiry)有效期:依需求選擇(例如 1y 為一年,0 為永不過期)有效期:根据需要选择(例如 1y 为一年,0 为永不过期)有効期限:お好みで選択(例:1y で1年、0 で無期限)Expiration: Piliin ayon sa iyong kagustuhan (hal. 1y para sa isang taon, o 0 para walang expiry)Example session:範例操作過程:示例操作过程:操作例:Halimbawang session:
$ gpg --full-generate-key
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 1y
Real name: John Doe
Email address: john.doe@datawords.asia
Comment:
You selected this USER-ID:
"John Doe <john.doe@datawords.asia>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
First, find your GPG key ID:首先,找到你的 GPG 金鑰 ID:首先,找到你的 GPG 密钥 ID:まず、GPG 鍵 ID を確認します:Una, hanapin ang iyong GPG key ID:
$ gpg --list-secret-keys --keyid-format=long
sec rsa4096/ABCDEF1234567890 2026-03-13 [SC] [expires: 2027-03-13]
C1CB417F5F2F9E4D147F01C4ABCDEF1234567890
uid [ultimate] John Doe <john.doe@datawords.asia>
ssb rsa4096/1234567890ABCDEF 2026-03-13 [E] [expires: 2027-03-13]
The key ID is the part after rsa4096/ on the sec line. In this example: ABCDEF1234567890金鑰 ID 是 sec 那行 rsa4096/ 後面的部分。在此範例中為:ABCDEF1234567890密钥 ID 是 sec 那行 rsa4096/ 后面的部分。在此示例中为:ABCDEF1234567890鍵 ID は sec 行の rsa4096/ の後の部分です。この例では:ABCDEF1234567890Ang key ID ay ang bahagi pagkatapos ng rsa4096/ sa sec na linya. Sa halimbawang ito: ABCDEF1234567890
Now export the public key in ASCII armor format:匯出 ASCII armor 格式的公鑰:导出 ASCII armor 格式的公钥:次に、ASCII armor 形式で公開鍵をエクスポートします:Ngayon, i-export ang public key sa ASCII armor format:
$ gpg --armor --export ABCDEF1234567890
This will output your public key block. Copy the entire output including the header and footer lines:這會輸出你的公鑰區塊。請複製整段輸出,包含開頭和結尾的標記行:这会输出你的公钥块。请复制全部输出,包括开头和结尾的标记行:公開鍵ブロックが出力されます。ヘッダーとフッター行を含む出力全体をコピーしてください:Ito ang magiging output ng iyong public key block. Kopyahin ang buong output kasama ang header at footer lines:
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGbS... (long base64-encoded data)
...
-----END PGP PUBLIC KEY BLOCK-----
gpg --armor --export KEY_ID | pbcopygpg --armor --export KEY_ID | xclip -selection clipboardgpg --armor --export KEY_ID | clip
Open git.datawords.hk in your browser and log in.在瀏覽器中開啟 git.datawords.hk 並登入。在浏览器中打开 git.datawords.hk 并登录。ブラウザで git.datawords.hk を開いてログインしてください。Buksan ang git.datawords.hk sa iyong browser at mag-log in.
4a. Click your avatar in the top-right corner, then click Settings:點擊右上角的頭像,然後點擊 Settings:点击右上角的头像,然后点击 Settings:右上のアバターをクリックし、Settings をクリックしてください:I-click ang iyong avatar sa kanang-itaas na sulok, pagkatapos i-click ang Settings:
4b. In the left sidebar, click SSH / GPG Keys:在左側選單中點擊 SSH / GPG Keys:在左侧菜单中点击 SSH / GPG Keys:左サイドバーで SSH / GPG Keys をクリックしてください:Sa kaliwang sidebar, i-click ang SSH / GPG Keys:
4c. Scroll down to the "Manage GPG Keys" section and click "Add Key":向下捲動到 "Manage GPG Keys" 區塊,點擊 "Add Key":向下滚动到 "Manage GPG Keys" 部分,点击 "Add Key":"Manage GPG Keys" セクションまでスクロールし、"Add Key" をクリックしてください:Mag-scroll pababa sa "Manage GPG Keys" na seksyon at i-click ang "Add Key":
4d. Paste the entire public key block (from Step 3) into the Content text area, then click the green "Add Key" button.將完整的公鑰區塊(來自第 3 步)貼到 Content 文字框中,然後點擊綠色的 "Add Key" 按鈕。将完整的公钥块(来自第 3 步)粘贴到 Content 文本框中,然后点击绿色的 "Add Key" 按钮。公開鍵ブロック全体(ステップ 3 から)を Content テキストエリアに貼り付け、緑色の "Add Key" ボタンをクリックしてください。I-paste ang buong public key block (mula sa Step 3) sa Content text area, pagkatapos i-click ang berdeng "Add Key" button.
Tell Git to use your GPG key for signing commits:設定 Git 使用你的 GPG 金鑰簽署 commit:配置 Git 使用你的 GPG 密钥签署 commit:コミットの署名に GPG 鍵を使用するよう Git に設定します:Sabihin sa Git na gamitin ang iyong GPG key para sa pag-sign ng mga commit:
# Set your signing key (use the key ID from Step 3)
$ git config --global user.signingkey ABCDEF1234567890
# Enable automatic commit signing
$ git config --global commit.gpgsign true
# (Optional) Also sign tags by default
$ git config --global tag.gpgsign true
error: gpg failed to sign the data, you may need to set the GPG TTY:如果出現 error: gpg failed to sign the data 錯誤,可能需要設定 GPG TTY:如果出现 error: gpg failed to sign the data 错误,可能需要设置 GPG TTY:error: gpg failed to sign the data エラーが出た場合、GPG TTY の設定が必要かもしれません:Kung lumabas ang error: gpg failed to sign the data, maaaring kailangan mong i-set ang GPG TTY:
$ echo 'export GPG_TTY=$(tty)' >> ~/.zshrc
$ source ~/.zshrc
$ git config --global gpg.program "C:/Program Files/Git/usr/bin/gpg.exe"
The exact path may vary. Check with where gpg in Git Bash.實際路徑可能不同。在 Git Bash 中用 where gpg 確認。实际路径可能不同。在 Git Bash 中用 where gpg 确认。正確なパスは異なる場合があります。Git Bash で where gpg で確認してください。Ang eksaktong path ay maaaring iba. I-check gamit ang where gpg sa Git Bash.
Make a test commit in any repository:在任何 repository 中建立一個測試 commit:在任何仓库中创建一个测试 commit:任意のリポジトリでテストコミットを作成します:Gumawa ng test commit sa kahit anong repository:
$ echo "test" >> test.txt
$ git add test.txt
$ git commit -m "test: verify GPG signing"
If prompted for your passphrase, enter it. Then verify the commit is signed:如果系統要求輸入密碼,請輸入。然後驗證 commit 是否已簽署:如果系统要求输入密码,请输入。然后验证 commit 是否已签署:パスフレーズの入力を求められたら入力してください。次にコミットが署名されていることを確認します:Kung hiningi ang iyong passphrase, ilagay ito. Pagkatapos, i-verify na naka-sign ang commit:
$ git log --show-signature -1
commit abc1234... (HEAD -> main)
gpg: Signature made Thu 13 Mar 2026 03:00:00 PM HKT
gpg: using RSA key C1CB417F5F2F9E4D147F01C4ABCDEF1234567890
gpg: Good signature from "John Doe <john.doe@datawords.asia>" [ultimate]
Author: John Doe <john.doe@datawords.asia>
Date: Thu Mar 13 15:00:00 2026 +0800
test: verify GPG signing
Push to Gitea and check the commit page — you should see a green "Verified" badge next to your commit.推送到 Gitea 並查看 commit 頁面——你應該會看到 commit 旁邊有綠色的 "Verified" 標籤。推送到 Gitea 并查看 commit 页面——你应该会看到 commit 旁边有绿色的 "Verified" 标签。Gitea にプッシュしてコミットページを確認してください。コミットの横に緑色の "Verified" バッジが表示されるはずです。I-push sa Gitea at tingnan ang commit page — dapat makita mo ang berdeng "Verified" badge sa tabi ng iyong commit.
| Problem問題问题問題Problema | Solution解決方案解决方案解決策Solusyon |
|---|---|
error: gpg failed to sign the data |
Run export GPG_TTY=$(tty) and try again. Add it to your shell profile.執行 export GPG_TTY=$(tty) 然後重試。將此加入你的 shell 設定檔。运行 export GPG_TTY=$(tty) 然后重试。将此添加到你的 shell 配置文件。export GPG_TTY=$(tty) を実行して再試行してください。シェルプロファイルに追加してください。Patakbuhin ang export GPG_TTY=$(tty) at subukan ulit. Idagdag ito sa iyong shell profile. |
| Commit shows as "Unverified" on GiteaCommit 在 Gitea 上顯示 "Unverified"Commit 在 Gitea 上显示 "Unverified"Gitea でコミットが "Unverified" と表示されるAng commit ay lumalabas na "Unverified" sa Gitea | The email in your GPG key must match your Gitea account email exactly. Check with gpg --list-keys.GPG 金鑰中的電子郵件必須與 Gitea 帳號的電子郵件完全一致。用 gpg --list-keys 確認。GPG 密钥中的电子邮箱必须与 Gitea 账号的电子邮箱完全一致。用 gpg --list-keys 确认。GPG 鍵のメールアドレスは Gitea アカウントのメールアドレスと完全に一致する必要があります。gpg --list-keys で確認してください。Ang email sa iyong GPG key ay kailangang eksaktong pareho sa email ng iyong Gitea account. I-check gamit ang gpg --list-keys. |
| GPG asks for passphrase every commit每次 commit 都要輸入密碼每次 commit 都要输入密码コミットのたびにパスフレーズを求められるLagi na lang hinihingi ang passphrase sa bawat commit | Use gpg-agent to cache your passphrase. Add default-cache-ttl 3600 to ~/.gnupg/gpg-agent.conf.使用 gpg-agent 快取密碼。將 default-cache-ttl 3600 加入 ~/.gnupg/gpg-agent.conf。使用 gpg-agent 缓存密码。将 default-cache-ttl 3600 添加到 ~/.gnupg/gpg-agent.conf。gpg-agent を使ってパスフレーズをキャッシュしてください。~/.gnupg/gpg-agent.conf に default-cache-ttl 3600 を追加してください。Gumamit ng gpg-agent para i-cache ang iyong passphrase. Idagdag ang default-cache-ttl 3600 sa ~/.gnupg/gpg-agent.conf. |
| Key expired金鑰過期密钥过期鍵の有効期限切れNag-expire na ang key | Extend it: gpg --edit-key KEY_ID → expire → set new date → save. Re-export and update on Gitea.延長有效期:gpg --edit-key KEY_ID → expire → 設定新日期 → save。重新匯出並更新 Gitea 上的金鑰。延长有效期:gpg --edit-key KEY_ID → expire → 设置新日期 → save。重新导出并更新 Gitea 上的密钥。延長する:gpg --edit-key KEY_ID → expire → 新しい日付を設定 → save。再エクスポートして Gitea で更新してください。I-extend ito: gpg --edit-key KEY_ID → expire → mag-set ng bagong petsa → save. I-re-export at i-update sa Gitea. |
| Multiple GPG keys, wrong one used有多把 GPG 金鑰,用錯了有多个 GPG 密钥,用错了複数の GPG 鍵があり、間違った鍵が使われているMaraming GPG key, mali ang nagamit | Set the correct key per repo: git config user.signingkey CORRECT_KEY_ID (without --global).為每個 repo 設定正確的金鑰:git config user.signingkey CORRECT_KEY_ID(不加 --global)。为每个仓库设置正确的密钥:git config user.signingkey CORRECT_KEY_ID(不加 --global)。リポジトリごとに正しい鍵を設定:git config user.signingkey CORRECT_KEY_ID(--global なし)。I-set ang tamang key sa bawat repo: git config user.signingkey CORRECT_KEY_ID (walang --global). |