Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

Git Introduction | معرفی گیت

📖توضیحات درس

🎥 این ویدیو قسمت چهل و دوم از بوت‌کمپ رایگان جاواست. 📚 Git – معرفی اولیه و آشنایی با سیستم‌های کنترل نسخه در این جلسه وارد دنیای Git می‌شویم؛ ابزاری قدرتمند و ضروری برای مدیریت نسخه کدها در پروژه‌های کوچک و بزرگ. ابتدا با مفهوم سیستم‌های کنترل نسخه (Version Control System – VCS) آشنا می‌شویم و سپس بررسی می‌کنیم چرا Git به‌عنوان محبوب‌ترین VCS دنیا شناخته می‌شود. در این ویدیو بررسی می‌کنیم: - نسخه‌سازی چیست و چرا اهمیت دارد - VCS چیست و چه کاربردهایی دارد - تفاوت Git با سایر ابزارهای کنترل نسخه - مزایای استفاده از Git برای توسعه‌دهندگان - سناریوهای کاربردی Git در پروژه‌های واقعی - جمع‌بندی و مرور نکات کلیدی 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی، توی گروه بپرس؛ من یا مربی‌های گروه کمکت می‌کنیم تا حرفه‌ای‌تر مسیرت رو ادامه بدی 🚀 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار
00:22:32🎯رایگان

📄جزوه

مفاهیم کلیدی

  • VCS (Version Control System)

سیستمی که تمامی تغییرات اعمال شده روی فایل‌ها و پروژه‌ها را ثبت می‌کند تا در صورت نیاز بتوان به نسخه‌های خاصی در گذشته (مثلاً وضعیت پروژه در ۱۰ روز پیش) بازگشت.

  • Local VCS

اولین نسل از سیستم‌های کنترل نسخه که تغییرات را در یک پایگاه داده ساده روی سیستم محلی (لوکال) کاربر ذخیره می‌کردند. بازیابی فایل‌های قدیمی در این سیستم با دشواری همراه بود.

  • Centralized VCS (CVCS)

سیستمی که در آن یک سرور مرکزی شامل تمامی نسخه‌های فایل‌هاست و برنامه‌نویسان به آن متصل می‌شوند. بزرگترین نقص آن این است که اگر سرور مرکزی از کار بیفتد یا هارد آن آسیب ببیند، کل تاریخچه پروژه از دست می‌رود.

  • Distributed VCS (DVCS)

نسل پیشرفته‌ای که Git نیز جزو آن است. در این مدل، هر کاربر یک نسخه کامل از کل پروژه و تاریخچه آن (Repository) را روی سیستم خود دارد. این یعنی هر سیستم یک نسخه پشتیبان کامل از سرور مرکزی است.

  • Branch

یک شاخه یا کپی جداگانه از کد اصلی پروژه که به برنامه‌نویس اجازه می‌دهد بدون خراب کردن کد اصلی، روی یک ویژگی (Feature) جدید یا رفع یک باگ کار کند.

  • Merge

فرآیند ترکیب تغییرات ایجاد شده در یک Branch جداگانه با شاخه اصلی پروژه، پس از اطمینان از صحت عملکرد کدها.

  • Conflict

زمانی رخ می‌دهد که دو نفر همزمان روی یک بخش از یک فایل تغییراتی اعمال کنند. در این حالت سیستم نمی‌تواند به طور خودکار تصمیم بگیرد کدام تغییر درست است و نیاز به مداخله برنامه‌نویس دارد.

نکات مهم مصاحبه‌ای

  • چرا استفاده از Git برای کارهای تیمی ضروری است؟
    چون اجازه می‌دهد چندین نفر همزمان روی یک پروژه کار کنند، تغییرات یکدیگر را ردیابی کنند، تعارضات کدی (Conflict) را حل کنند و در صورت بروز خطا، به نسخه‌های سالم قبلی بازگردند.

  • تفاوت اصلی CVCS و DVCS در چیست؟
    در Centralized VCS فقط یک نسخه مرکزی وجود دارد و اگر سرور از دسترس خارج شود، کار متوقف می‌شود. اما در Distributed VCS (مانند Git)، هر برنامه‌نویس یک نسخه کامل از پروژه را دارد و وابستگی مطلق به اینترنت یا سرور مرکزی برای کار وجود ندارد.

  • چه زمانی از Branch استفاده می‌کنیم؟
    هر زمان که بخواهیم ویژگی جدیدی اضافه کنیم یا تغییری ایجاد کنیم که ممکن است کد اصلی را خراب کند، یک Branch می‌سازیم تا توسعه به صورت ایزوله و موازی انجام شود.

  • سیستم کنترل نسخه چه کمکی به رفع باگ در محیط عملیاتی (Production) می‌کند؟
    اگر در نسخه فعلی باگی پیدا شود که قابل استفاده نباشد، می‌توان با کمک VCS سریعاً به آخرین نسخه سالم (Stable) بازگشت و در عین حال روی نسخه باگ‌دار برای رفع مشکل کار کرد.

مثال یا سناریوی کاربردی

تصور کنید در حال توسعه یک سیستم مدیریت کتابخانه هستید: ایجاد شاخه جدید: برای اضافه کردن بخش "امانت کتاب"، یک Branch جدید از کد اصلی می‌گیرید. این کار باعث می‌شود کد اصلی شما دست‌نخورده باقی بماند.

توسعه موازی: همزمان همکار شما می‌تواند روی Branch دیگری برای بخش "مدیریت کاربران" کار کند بدون اینکه کدهای شما با هم تداخلی داشته باشد.

بررسی و ترکیب: پس از پایان کار و تست کدها، شاخه "امانت کتاب" را با شاخه اصلی Merge می‌کنید. اگر همکارتان هم کدهایش را Merge کند، حالا هر دو ویژگی در کد اصلی کنار هم قرار می‌گیرند.

حل تعارض: اگر هر دو نفر شما یک خط از فایل تنظیمات را تغییر داده باشید، در مرحله Merge یک Conflict رخ می‌دهد که باید با بررسی کدها، نسخه نهایی را انتخاب کنید.

بیشتر بدانید

  • تاریخچه: گیت در سال ۲۰۰۵ توسط لینوس توروالدز (خالق لینوکس) برای مدیریت توسعه هسته لینوکس ساخته شد.

  • عملکرد: گیت بسیار سریع و سبک است و از عملیات‌های غیرمخرب استفاده می‌کند، به این معنی که ریسک از دست رفتن کدها در آن بسیار پایین است.

  • دستورات پایه: دستوراتی مانند git clone برای گرفتن کپی از پروژه، git pull برای دریافت آخرین تغییرات و git push برای ارسال کدها به سرور از پرکاربردترین کامندها هستند.

  • ارتباط با سرویس‌های ابری: گیت ستون فقرات سرویس‌های بزرگی مانند GitHub و GitLab است که برای میزبانی پروژه‌های نرم‌افزاری استفاده می‌شوند.