امضا کردن کامیت‌های گیت [ در گیت‌هاب ] با امضای دیجیتال

اگر برنامه نویس هستین ولی با گیت (git) آشنا نیستین که مهمترین قدم بعدی شما در برنامه‌نویسی یاد گرفتن گیت است. اما اگر برنامه‌نویس نیستین و با گیت‌ هم آشنا نیستین، مهم نیست. الان یه توضیح خیلی خلاصه می‌دم.

گیت‌ یه روش برای نگهداری تاریخچه کارها و مشارکت در یک پروژه است. برنامه‌نویس‌ها (و خیلی‌های دیگه) از گیت‌ استفاده می‌کنن تا تاریخچه کارهاشون رو نگه‌دارن، مسیر پیشرفت و تغییرات و حل مسائل یه برنامه رو مدیریت کنن و بتونن تو پروژه با همکارهاشون روی یک محتوای مشترک کار کنن و بعد با هم ترکیبش کنن.

معمولا وقتی برنامه رو تغییر دادیم و فایل‌ها رو به گیت اضافه کردیم، با دستور commit این دستورات رو «تایید» می‌کنیم و می‌گیم آماده اضافه شدن به [تاریخچه] پروژه است. در این مرحله ممکنه لازم باشه «کامیت رو امضا کنیم»، یعنی با یه امضای دیجیتالی، ثابت کنیم که این تغییر توسط خود ما انجام شده و یکی به اسم ما تغییراتی رو به پروژه اضافه نکرده. روش آسون و سر راست اینکار، استفاده از کلیدهای ssh است. کافیه کلید اس اس اچ خودتون رو داشته باشین (یا با دستور ssh-keygen درستش کنین). این کلیدها معمولا توی لینوکس به مسیر ~/.ssh/ می‌رن.

حالا کافیه به گیت بگین که می‌خواین با اس اس اچ و با فلان کلید کامیت رو امضا کنین:

git config --global gpg.format ssh
git config --global user.signingkey /home/jadi/.ssh/id_rsa.pub

مشخصه که دستورات مربوط به من هستن. دایرکتوری یا اسم فایل شما ممکنه فرق کنه ولی در نهایت باید با کلید public کار کنین. حالا هر وقت کامیتی داشتین، کافیه اونو با سوییچ -S امضا کنین.

git add this_file that_file
git commit -S -m 'This is a signed commit'

و مشخصه که اگر کامیت آخر رو کردین و رییس تازه گفته باید امضاش کنین، می تونین با

git commit --amend -S

اینکار رو بکنین.

البته اگر از گیت‌هاب استفاده می‌کنین، باید کلید پابلیک خودتون رو هم بهش معرفی کنین تا بتونه علاوه بر امضا، تایید هم بکنه که امضا مال شماست. برای اینکار به صفحه https://github.com/settings/keys برین و دگمه اضافه کردن کلید رو بزنین و کلید پابلیک خودتون رو اضافه کنین و توی منوی دراپ داون، اوو به عنوان Signing Key مشخص کنین و خلاص.

نکته مهم: هیچ جایی در مورد کلید خصوصی حرفی کاری نکردیم. هیچ وقت محتویات فایل id_rsa یا فایل‌های مشابه (بدون پسوند pub.) نباید منتشر بشن. مگر اینکه دقیقا بدونین دارین چیکار می‌کنین.