در دنیای توسعه نرمافزار، هر پروژهای که با تیمهای بزرگ یا کوچک اداره میشود، نیاز به کنترل نسخه دقیق و سازمانیافته دارد. سیستمهای کنترل نسخه مانند Git امکانات متعددی برای مدیریت تغییرات فراهم میکنند و دو ابزار مهم در این سیستمها عبارتند از Git branch و Git tag
این دو ابزار نقش حیاتی در سازماندهی کد، توسعه ویژگیهای جدید، انتشار نسخههای پایدار و ردیابی تاریخچه پروژه دارند. در این مطلب به بررسی تفاوتها، کاربردها و بهترین شیوه استفاده از Git tag و branch میپردازیم.
Git Tag چیست؟
Git tag به معنای نشانهگذاری یک نقطه مشخص در تاریخچه پروژه است. میتوان آن را مانند یک برچسب یا علامت روی یک commit خاص تصور کرد که به شما امکان میدهد هر زمان به آن نقطه بازگردید یا آن را به عنوان یک نسخه مهم ذخیره کنید.
کار با دستور git tag
دستور git tag به شما امکان میدهد تا تگها را ایجاد، فهرستبندی، حذف و بررسی کنید. در ادامه روش استفاده از دستور git tag برای مشخص کردن نسخه جدید کد برنامه توضیح داده شده است:
ابتدا یک تگ جدید با نام v1.0.0 برای آخرین commit در مخزن خود ایجاد کنید. برای این کار دستور زیر را اجرا کنید:
git tag v1.0.0
برای مشاهده تمامی تگهای موجود در مخزن، میتوانید دستور زیر را اجرا کنید:
git tag
دستور git tag همچنین امکان بررسی یک تگ مشخص را فراهم میکند. دستور بعدی، تگ v1.0.0 را بررسی میکند و جزئیاتی مانند نام ایجادکننده تگ، تاریخ و پیام آن را نمایش میدهد:
git tag -v v1.0.0
در نهایت، دستور git tag قابلیت حذف تگها را نیز دارد. برای حذف تگ v1.0.0 میتوانید دستور زیر را اجرا کنید:
git tag -d v1.0.0
توجه داشته باشید که حذف یک تگ، هیچ تاثیری بر کد موجود در مخزن ندارد و فقط برچسب تگ از تاریخچه حذف میشود.
ویژگیهای Git tag
- ثابت بودن: پس از ایجاد، تگ به همان commit اشاره دارد و تغییر نمیکند.
- نشانهگذاری نسخهها: معمولا برای مشخص کردن نسخههای منتشر شده نرمافزار استفاده میشود.
- سازماندهی پروژه: تگها به تیمها کمک میکنند تاریخچه پروژه را راحتتر مرور و تحلیل کنند.
مزایای استفاده از Git tag
- امکان بازگشت به نسخههای پایدار یا مهم
- مشخص کردن نقاط انتشار نرمافزار
- ایجاد مرجع دائمی برای مستندسازی و بررسی تغییرات
Git Branch چیست؟
Git branch به معنای شاخهای جداگانه از تاریخچه پروژه است که تیم توسعه میتواند برای اعمال تغییرات جدید، ایجاد ویژگیها یا رفع اشکال از آن استفاده کند. هر شاخه مسیر توسعه مستقلی دارد که میتوان تغییرات آن را جداگانه مدیریت کرد و پس از اطمینان، به شاخه اصلی ادغام نمود.
برای پروژههای مهم خود به دنبال سرور مطمئن هستید؟ خرید سرور مجازی با IP ثابت و سرعت بالا در پارسدو، گزینهای ایدهآل است.
کار با دستور git branch
دستور git branch به شما امکان میدهد تا شاخهها را ایجاد، فهرستبندی، تغییر نام و حذف کنید. توجه داشته باشید که با این دستور نمیتوانید بین شاخهها جابجا شوید؛ برای این کار از دستور دیگری استفاده میشود.
ایجاد یک شاخه جدید
ابتدا یک شاخه جدید با نام dev ایجاد کنید:
git branch dev
جابجایی به شاخه توسعه
برای اینکه به شاخه dev بروید، از دستور زیر استفاده کنید:
git switch dev
اعمال تغییرات و ثبت آنها در شاخه dev
اکنون میتوانید تغییرات خود را در کد اعمال کرده و با استفاده از دستورات معمول git add و git commit آنها را در شاخه dev ثبت کنید.
ادغام تغییرات با شاخه اصلی
پس از تکمیل تغییرات و بررسی آنها، میتوانید تغییرات شاخه dev را با شاخه اصلی (main) ادغام کنید:
git merge dev
مشاهده فهرست شاخهها
استفاده از دستور git branch فهرستی از تمامی شاخههای موجود در مخزن را نمایش میدهد. شاخهای که در حال حاضر روی آن هستید با یک ستاره (*) مشخص میشود:
git branch
تغییر نام یک شاخه
دستور git branch امکان تغییر نام شاخهها را نیز فراهم میکند. برای مثال، برای تغییر نام شاخه dev به development، دستور زیر را اجرا کنید:
git branch -m dev development
حذف یک شاخه
در نهایت، دستور git branch قابلیت حذف شاخهها را نیز دارد. برای حذف شاخه development، از دستور زیر استفاده کنید:
git branch -d development
توجه داشته باشید که نمیتوانید شاخهای که در حال حاضر روی آن هستید را حذف کنید. ابتدا باید به شاخه دیگری جابجا شوید و سپس اقدام به حذف کنید.
ویژگیهای Git branch
- پویا و متغیر: شاخه با هر commit جدید حرکت میکند و تغییرات را دنبال میکند.
- ایجاد محیط مستقل برای توسعه: توسعهدهندگان میتوانند بدون تأثیر روی شاخه اصلی تغییرات آزمایشی و جدید ایجاد کنند.
- امکان همکاری تیمی: چندین شاخه میتوانند همزمان توسط تیمهای مختلف توسعه داده شوند و بعد از تکمیل تغییرات، ادغام شوند.
مزایای استفاده از Git branch
- مدیریت همزمان چند ویژگی یا اصلاحات در پروژه
- کاهش ریسک ایجاد مشکل در شاخه اصلی
- امکان آزمایش و بررسی کد بدون ایجاد اختلال در نسخه اصلی نرمافزار
تفاوتهای کلیدی Git tag و Git branch
هدف استفاده
- Branch: مسیر توسعه فعال، اعمال تغییرات و ویژگیهای جدید
- Tag: نشانهگذاری نسخههای منتشر شده یا نقاط مهم در تاریخچه
ثابت بودن در تاریخچه
- Branch: پویا و قابل تغییر با هر commit جدید
- Tag: ثابت و تغییرناپذیر، همیشه به همان commit مشخص اشاره دارد
کاربرد عملی
- Branch: استفاده در توسعه ویژگیها، رفع اشکال و آزمایش تغییرات
- Tag: استفاده برای ثبت نسخههای پایدار، انتشار نرمافزار و مرجعگذاری نقاط مهم
رابطه با فرآیند انتشار
شاخهها مسیر توسعه را فراهم میکنند و پس از تکمیل تغییرات و آزمایش، تغییرات شاخهها به شاخه اصلی ادغام میشوند. سپس نسخه نهایی میتواند با ایجاد یک تگ نشانهگذاری شود تا نسخه منتشر شده قابل ردیابی و بازگشت باشد.
زمان استفاده از Branch یا Tag
چه زمانی از Branch استفاده کنیم؟
- وقتی نیاز داریم چند ویژگی جدید را به طور موازی توسعه دهیم
- برای اعمال تغییرات آزمایشی بدون تأثیر روی شاخه اصلی
- هنگام رفع اشکال و بررسی عملکرد تغییرات
چه زمانی از Tag استفاده کنیم؟
- هنگام انتشار نسخه پایدار نرمافزار
- وقتی میخواهیم یک نقطه مشخص در تاریخچه پروژه را به عنوان مرجع نگه داریم
- برای علامتگذاری نسخههایی که به کاربران نهایی تحویل داده شدهاند
چگونه از Git tags و branches در فرآیند CI/CD استفاده کنیم؟
در فرآیندهای توسعه مدرن و DevOps، استفاده از Git tag و branch بسیار مهم است:
- Branches برای اجرای تستها، ساخت (build) و بررسی کد در محیطهای تست و staging استفاده میشوند.
- Tags برای انتشار نسخههای تولیدی و مشخص کردن نسخه پایدار نرمافزار استفاده میشوند.
این ترکیب باعث میشود توسعه، تست و انتشار نرمافزار بهصورت ساختاریافته، قابل پیشبینی و امن انجام شود.
بهترین شیوهها در استفاده از Tags و Branches
- نامگذاری معنادار: برای شاخهها و تگها از نامهای واضح و توصیفی استفاده کنید.
-
- شاخه ویژگی: feature/login-page
- تگ نسخه: v2.0.0
- حذف شاخههای قدیمی پس از ادغام: این کار تاریخچه پروژه را تمیز و قابل مدیریت نگه میدارد.
- نشانهگذاری نسخههای پایدار با تگ: هر نسخه منتشر شده باید با یک تگ مشخص علامتگذاری شود.
- مستندسازی تغییرات مهم: استفاده از پیامهای واضح در commit و تگها باعث میشود تاریخچه پروژه برای تیم و آینده پروژه قابل فهم باشد.
جمعبندی
Git branch و Git tag دو ابزار مکمل و ضروری در هر پروژه نرمافزاری هستند. شاخهها مسیر توسعه فعال را فراهم میکنند و امکان اعمال تغییرات و ویژگیهای جدید را بدون تأثیر روی نسخه اصلی فراهم میکنند، در حالی که تگها نقاط مهم و نسخههای پایدار را نشانهگذاری میکنند.
استفاده صحیح و ترکیبی از این ابزارها باعث میشود پروژه شما سازمانیافته، قابل ردیابی، امن و آماده انتشار باشد و مدیریت توسعه نرمافزار، تست و انتشار نسخهها به شکلی حرفهای انجام شود.