ROUTES

۲۱ مرداد ۱۳۹۳

تگ کردن در Git

مثل خیلی از سیستم‌های مدیریت نسخه‌ی دیگه، گیت هم قابلیت تگ کردن و مشخص کردن یک قسمت مهم از تاریخچه نرم‌افزار رو داره. افراد از این امکان معمولا برای مشخص کردن انتشارها (v1.0 و...) استفاده میکنن. تو این پست لیست کردن تگ‌ها، ساختن تگ‌ها و انواع تگ‌های مختلف رو نشون میدم.

لیست کردن تگ‌ها

برای لیست کردن تگ‌ها از دستور git tag استفاده کنین:

$ git tag
v0.1
v1.3

این دستور تگ‌ها رو به ترتیب حروف الفبا نشون میده و ترتیب نمایش اونها ارتباطی به اهمیت‌شون نداره.

شما همینطور می‌تونین تگ‌ها رو براساس الگویی خاص فهرست کنید. مثلا در مخزنی که شامل ۲۴۰ تا تگ میشه و شما فقط به تگ‌های مربوط به نسخه 1.4.2 اهمیت میدین، میتونید دستور زیر رو بزنید:

$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

ساخت تگ

در گیت دو نوع تگ کردن وجود داره: lightweight و annotated. تگ lightweight دقیقا مثل یک شاخه هست که تغییری نمیکنه - فقط یک نشانگر هست به یک کامیت خاص. ولی تگ‌های annotated یک آبجکت کامل رو در بانک‌اطلاعاتی گیت ذخیره میکنن. اونها checksum دارن، اسم، ایمیل تگ کننده رو نشون میدن و تاریخ هم دارن و میتونن با GPG هم امضا بشن. به طور معمول توصیه میشه که از تگ‌های annotated استفاده کنید چون حاوی تمام اطلاعات هستن.

تگ‌های Annotated

ساخت تگ‌های annotated ساده است. از کلید -a با فرمان tag استفاده کنید:

$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
v0.1
v1.3
v1.4

کلید -m پیام تگ رو مشخص میکنه. اگر این کلید رو استفاده نکنید گیت ادیتور پیش‌فرض انتخاب شده‌تون رو نمایش خواهد داد تا پیام تگ رو وارد کنید. با ذخیره کردن و خروج از ادیتور عمل تگ انجام میشه.

تگ‌های امضا شده

برای امضا کردن تگ‌هاتون با کلید GPG، تنها کاری که باید بکنید استفاده از کلید -s به جای -a است:

$ git tag -s v1.5 -m 'my signed 1.5 tag'
You need a passphrase to unlock the secret key for
user: "Scott Chacon <[email protected]>"
1024-bit DSA key, ID F721C45A, created 2009-02-09

اگر دستور git show رو اجرا کنید، می‌تونید امضا GPG خودتون رو ببینید.

تگ‌های Lightweight

برای این تگ‌ها از کلیدهای -m، -s یا -a استفاده نکنید:

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

اگر اینبار دستور git show رو اجرا کنید فقط همون کامیت رو می‌بینید و اطلاعات بیشتری وجود نداره:

$ git show v1.4-lw
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7... a6b4c97...
Author: Scott Chacon <[email protected]>
Date:   Sun Feb 8 19:02:46 2009 -0800

    Merge branch 'experiment'

برای اطلاعات بیشتر در مورد تگ‌ها در گیت به مستندات گیت مراجعه کنید.