اگر برنامه نویس و مخصوصا توسعه دهنده وب هستید، حتما می دانید git چیست یا نام git را شنیده اید. در این مقاله و مقالات بعدی قصد دارم به صورت خلاصه برخی از قابلیت های این VCS را با شما مرور کنم اما قبل از آن باید با سیستم های VCS آشنا شویم. ما قصد داریم در یک سری مقاله چند قسمتی ویژگی های مهم و کاربردی git و github را بررسی کنیم.
سیستم های VCS (مخفف version control system و به معنی «سیستم کنترل ورژن») تاریخچه تغییرات یک پروژه را دنبال می کند و تغییرات مختلف را ثبت کرده و نزد خود نگه می دارد. این دسته از سیستم ها کاربردهای فراوانی دارند اما کاربرد اصلی و بهترین مزیت آن ها نگهداری تغییرات است (مخصوصا هنگامی که پروژه به صورت کار تیمی جلو میرود). در واقع زمانی که کدها پیچیده شد و حجم پروژه بالا رفت ایجاد تغییرات در پروژه کار خطرناکی است چرا که هر تغییر کوچکی می تواند تمام پروژه را فلج کند. حالا تصور کنید که یک تیم برنامه نویسی روی پروژه ما کار کند و چند نفر از اعضای تیم، قسمتی از کد را تغییر بدهند. در چنین حالتی باید صدها خط کد را بررسی و تحلیل کنیم تا بفهمیم کدام تغییر باعث ایجاد مشکل شده است.
سیستم های کنترل ورژن به شما اجازه می دهند بدون دغدغه هر تغییری را که خواستید روی پروژه خود اعمال کنید چرا که هر نسخه از تغییرات توسط git ذخیره می شود و در صورتی که پروژه دچار مشکل شود می توانید به راحتی به نسخه های قبلی پروژه برگردید. بنابراین حتی اگر تمام پروژه را بهم بریزید جای هیچ نگرانی وجود نخواهد داشت.
توسعه دهندگان با استفاده از git می توانند موارد زیر را بررسی کنند:
حالا که به طور خلاصه با سیستم های VCS آشنا شدید نوبت به آشنایی با DVCS (مخفف distributed version control system و به معنی «سیستم های کنترل ورژن توزیع شده») است. Git یک نمونه عالی از سیستم های DVCS است! سیستم های DVCS معمولا برای پروژه های open-source و متن باز استفاده می شوند. این نوع از سیستم های VCS به تمام کاربران اجازه دسترسی به تمام فایل ها، پوشه ها، branch ها و iteration های یک پروژه را می دهند. همچنین تمام کاربران می توانند به یک تاریخچه کامل و مستقل از تغییرات دسترسی داشته باشند.
برخلاف سیستم های کنترل ورژن مرکزی (centralized version control systems)، سیستم های DVCS مانند Git نیازی به اتصال دائم به repository اصلی ندارند؛ کاربران می توانند هر جایی که باشند کارشان را انجام داده و از هر منطقه زمانی و بدون وابستگی به دیگران تغییرات را اعمال کنند. بدون وجود این سیستم ها توسعه دهندگان مجبور هستند که از هر نسخه پروژه چندین بار کپی بگیرند که باعث ایجاد آرشیوی شلوغ و به هم ریخته از انواع فایل های درهم می شود.
سوال دیگری که مطرح می شود این است: چرا از بین سیستم های کنترل ورژن باید git را انتخاب کنیم؟
بر اساس نظرسنجی انجام شده در سایت stackoverflow بیش از 70 درصد توسعه دهندگان از Git استفاده می کنند. بنابراین Git بالاترین میزان استفاده و کاربر را در تمام دنیا به خود اختصاص داده است. شما می توانید از Git برای پروژه های open-source و حتی پروژه های تجاری استفاده کنید. از دلایل اصلی استفاده از Git می توان به موارد زیر اشاره کرد:
repository ها (یا همان پروژه های Git) تمامی فایل ها و پوشه های مربوط به یک پروژه را درون خود نگه می دارند. تغییرات تک تک فایل ها نیز در همین قسمت ذخیره می شود. تاریخچه هر فایل مانند یک snapshot ذخیره می شود که به آن commit می گوییم و این commit ها هستند که یک branch را می سازند. بگذارید به زبان ساده تر توضیح بدهم:
هشدار: طبیعت سیستم های DVCS بدین صورت است که repository ها مستقل هستند بنابراین هر فردی که یک کپی از repository را داشته باشد به تمام کد ها و تاریخچه آن ها دسترسی خواهد داشت.
سوال: نقش وب سایت GitHub در این میان چیست؟
پاسخ: Git غیر متمرکز (decentralized) است یعنی برای ذخیره فایل ها و تغییرات آن ها به هیچ سروری وابسته نیست و تمام فایل ها را به صورت محلی روی هارد درایو کامپیوتر خودتان ذخیره می کند. این یک ویژگی بسیار عالی است اما اگر بخواهیم کار گروهی و Remote (دورکاری) انجام دهیم باید محلی داشته باشیم که افراد مختلف بتوانند به آن دسترسی داشته باشند (واضح است که افراد مختلف به هارد درایو شما دسترسی ندارند). اینجاست که وب سایت هایی مانند GitHub و BitBucket وارد عمل می شوند. شما می توانید پوشه اصلی پروژه خود را (که به آن repository میگوییم) درون یک repository از سایت GitHub قرار دهید تا افراد مختلف و مورد نظر خودتان به کد های شما دسترسی داشته باشند.
در قسمت های بعدی در مورد git و github بیشتر صحبت خواهیم کرد.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.