امضای کامیتها با GPG — نشان Verified
امضای دیجیتال کامیتها و تگها با GPG تا گیتهاب نشان Verified بدهد — اثبات هویت حرفهای.
چرا امضا کنیم؟
هر کسی میتواند در git config هر نام و ایمیلی بگذارد و کامیت بزند — انگار شما بوده! امضای دیجیتال با GPG این مشکل را حل میکند: گیتهام امضای شما را تأیید میکند و نشان Verified (تأییدشده ✅) کنار کامیت میگذارد.
GPG چیست؟
GPG (GNU Privacy Guard) ابزار استاندارد رمزنگاری کلید عمومی/خصوصی است — همان مفهومی که در SSH دیدید:
- کلید خصوصی: نزد شما — با آن امضا میکنید
- کلید عمومی: به گیتهاب میدهید — با آن تأیید میشود
قدم ۱: ساخت کلید GPG
gpg --full-generate-key
به سؤالها جواب بدهید:
- نوع کلید:
(1) RSA and RSA— Enter - طول کلید:
4096 - مدت اعتبار:
0 = بدون انقضا— Enter و y - نام: نام واقعیتان
- ایمیل: دقیقاً ایمیل گیتهابتان!
- رمز (passphrase): یک رمز برای کلید — یادتان بماند
قدم ۲: گرفتن کلید عمومی
# لیست کلیدها:
gpg --list-secret-keys --keyid-format=long
# sec rsa4096/ABCDEF1234567890 2026-01-15 [SC]
# ↑ این بخش (بعد از اسلش) شناسه کلید است
# نمایش کلید عمومی برای کپی:
gpg --armor --export ABCDEF1234567890
خروجی بین -----BEGIN PGP PUBLIC KEY BLOCK----- و -----END... را کپی کنید.
قدم ۳: افزودن به گیتهاب
- Settings → SSH and GPG keys
- New GPG key
- Paste و Add GPG key
قدم ۴: تنظیم گیت
# معرفی کلید به گیت:
git config --global user.signingkey ABCDEF1234567890
# امضای همه کامیتها بهصورت خودکار:
git config --global commit.gpgsign true
قدم ۵: کامیت امضاشده!
git commit -m "کامیت مهم و امن"
# (رمز کلید را میپرسد)
git push
در گیتهاب کنار کامیت: Verified ✅
امضای تگها
git tag -s v1.0 -m "نسخه رسمی ۱.۰"
سوئیچ -s (بهجای -a) تگ را امضا میکند — برای releaseهای رسمی مهم است.
بررسی امضاها
# بررسی امضای یک کامیت:
git verify-commit HEAD
# بررسی امضای تگ:
git verify-tag v1.0
# دیدن امضا در log:
git log --show-signature -1
SSH Signing — روش جدیدتر
از گیت ۲.۳۴ میتوان بهجای GPG از همان کلید SSH برای امضا استفاده کرد (سادهتر!):
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
و کلید عمومی را در گیتهاب بهعنوان Signing Key اضافه کنید.
خلاصه
- امضا اثبات میکند کامیت واقعاً از شماست
- GPG: کلید بسازید → عمومی را به گیتهاب بدهید → گیت را تنظیم کنید
commit.gpgsign true= امضای خودکار همه کامیتها- روش جدید: SSH Signing با همان کلید SSH موجود
این مبحث بخشی از دوره آموزش کامل Git است.