گیت (Source Control) چیست و چرا اهمیت بالایی دارد؟

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

انواع سورس کنترل ها

بسته به نوع مدیریتی که در سورس کنترل ها پیاده سازی شده است سورس کنترل ها انواع مختلفی دارند. در حالت کلی سورس کنترل ها به دو دسته اصلی سورس کنترل های متمرکز Centralized Version Control Systems)) و سورس کنترل های توزیع شده (Distributed Version Control Systems) تقسیم بندی می شوند.

Source control های متمرکز  (Centralized Version Control Systems)

در سورس کنترل های متمرکز یک سرور اصلی وجود دارد که سورس بر روی آن قرار می گیرد و زمانیکه یک برنامه نویس درخواست دریافت سورس را بدهد بسته به این که قبلا پروژه را داشته یا نه، کل پروژه یا بخشی از آن را که توسط سایر افراد تغییر کرده است را دریافت میکند. در این مدل یک مخزن (Repository) داریم که روی یک سرور قرار می‌گیره که شامل کل پروژه با تاریخچه‌اش است. به طور مثال TFS و SVN از جمله سورس کنترل های متمرکز هستند. از جمله عملیات قابل انجام در این نوع checkin وcheckout  برای ارسال و دریافت فایل ها می باشد. single checkout از قابلیت های TFS است که در آن در یک زمان تنها یک کاربر بر روی یک فایل کارمی کند و برای سایر افراد این فایل قفل می شود.  یکی از مشکلات این نوع سورس کنترل ها این است که در صورتیکه سرور به هر دلیلی از کار بیفتد دیگر امکان ارسال و دریافت فایل ها وجود ندارد و روند ادامه کار با مشکل روبرو میشود.

Source control های توزیع شده  (Distributed Version Control Systems)

در این نوع سورس کنترل ها زمانیکه عمل checkout انجام گیرد تمام فایل ها و داده های مدیریتی و تاریخچه ورژن ها به مبدا ارسال میشود و تمامی افراد تیم یک نسخه کامل از کل پروژه دارند و در صورتیکه مشکلی برای نسخه سرور بوجود آید با نسخه یکی از اعضای تیم جایگزین خواهد شد. از جمله سورس کنترل های متمرکز میتوان Git , Mercurial, Bazaar و… را نام برد. یکی از قابلیت‌هایی که در این سیستم‌های سورس کنترل وجود دارد این است که کلاینت ها را می‌توان در گروه‌های مختلف قرار داد که همزمان با هم بر روی پروژه کار کنند. در بخش قبلی به معرفی انواع سورس کنترل ها پرداختیم حال در این قسمت به بررسی دقیق تر دو سورس کنترل TFS و Git خواهیم پرداخت.

عملیات قابل انجام بر روی  TFS

  Team Foundation Server یا به اختصار TFS محصول مایکروسافت است که توسعه دهندگان از آن برای کنترل ورژن پروژه های مختلف از آن استفاده می کنند. از TFS می توان برای عملیاتی مانند مدیریت کاربران و کنترل دسترسی هرکدام به پروژه ها نیز استفاده شود. نرم افزار TFS در کنار مدیریت پروژه بین اعضاء تیم برنامه نویسی قادر است مدیریت زمان را بین اعضاء یک تیم با الگوریتم Scrum انجام دهد از این رو یکی از محبوب ترین نرم افزار های Team Working محسوب می شود.  از سورس کنترلهای git و یا TFVC پشتیبانی میکند. محیط برنامه کاملا توسعه یافته و دارای گرافیک بالا و زیبایی می باشد که می توانید براحتی کدهای خود را مدیریت نمایید.عملیاتی که برای کار با پروژه می توان انجام داد کارهای زیر می باشد
Map
این عمل را هنگامی باید انجام داد که شما برای بار اول می خواهید پروژه را بر روی سیستم خود کپی کنید. با مپ کردن یک محل برای ذخیره سازی فایل های پروژه مشخص می شود و آن مسیر به عنوان مسیر پروژه ذخیره می شود. دقت داشته باشید که هنگام مپ کردن فایلی کپی نمی شود و فقط محل ذخیره سازی فایل ها مشخص می شود


Get Latest Version
با این عمل فایل هایی که بر روی سیستم شما موجود است بررسی می شود. و فایل هایی که وجود ندارد و یا این که ورژن فایل ها قدیمی است آن فایل ها را بر روی سیستم شما کپی می کند. شما بعد از عمل مپ کردن نیز باید عمل Get Latest Version را انجام دهید تا کل فایل های پروژه بر روی سیستم شما دانلود شود

Undo pending changes

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


check in

این عمل شبیه عمل push در سیستم گیت است. یعنی تغییراتی را که انجام داده اید را بر روی سرور آپلود می کند. البته قبل از آن شما می توانید یک کامنت و توضیحاتی برای این ورژن از فایل ها قرار دهید و شرح بدهید که چه تغییراتی انجام شده است. البته نوشتن توضیحات در tfs اجباری نیست ولی در گیت شما باید توضیحات را وارد کنید. هر check in یک شماره دارد
 Compare
اگر شما بخواهید ببینید که فایل شما در مقایسه با یکی از فایل های سرور چه تغییراتی داشته است از دستور compare استفاده می کنید. در این حالت تغییرات و حذف و اضافه ها را با رنگ های مختلف یه شما نشان می دهد


Get Specific Version

برخی اوقات شما نمی خواهید که آخرین ورژن موجود بر روی tfs را دریافت کنید بلکه می خواهید یک ورژن خاص را از سرور دریافت کنید وتغییرات آن را ببینید. برای این کار از Get Specific Version استفاده می شود. با این کار پنجره ای باز می شود که به شما اجازه می دهد ورژنی از پروژه را که می خواهید انتخاب کنید و از سرور دریافت نمایید


shelve pending changes

حالتی را در نظر بگیرید که کار شما تمام نشده است ولی باید تغییرات خود را بر روی سرور آپلود کنید ولی جزء ورژن های پروژه محصوب نشود در این صورت شما می توانید از این عمل استفاده کنید. و بعدا آن را گرفته و ادامه دهید. یکی از خواصی که tfs دارد این است که وقتی که کلاینتی یک فایل را ویرایش می کند می توان طوری پیکر بندی کرد که سایر کلاینت ها نتوانند دیگر آن فایل را ویرایش کنند و فایل مورد نظر برای آنها قفل می شود. برای این کار در سطح سرور باید single checkout را فعال کنیم

عملیات های پایه ای گیت

بر روی سورس کنترل Git اعمال متنوعی برای کار با سورس انجام می شود که در ادامه آمده است. شما برای استفاده از گیت می توانید هم از خط فرمان آن استفاده کنید و یا هم می‌توانید از ابزارهای ویژوالی که تعداد آن‌ها هم بسیار است استفاده کنید. ما در این مطلب به معنی و مفهوم هرکدام از عملیات می‌پردازیم.

عملیات clone
حالتی را در نظر بگیرید که شما در یک تیم عضو شده‌اید و یا می‌خواهید از سایت گیت هاب یک سورس را بگیرید در حالی که هیچ فایلی از سورس مورد نظر را ندارید. در این حالت شما باید پروژه را clone کنید. به عبارت دیگر عملی که برای اولین بار انجام می‌شود و کل پروژه را به همراه repository های آن دریافت می‌کند را clone می گوییم. با clone کردن یک پروژه کل فایل‌های پروژه مورد نظر به سیستم شما کپی می‌شود و در محلی که مشخص کرده‌اید ریخته می شود. کل فایل‌ها و تنظیمات و تاریخچه تغییر فایل‌ها به سیستم شما کپی خواهد شد. دوستان دقت کنند که تاریخچه پروژه معمولاً در سیستم گیت در یک پوشه git نگهداری می شود.که معمولاً این پوشه مخفی می باشد.در ضمن این‌طور نیست که بگوییم چون این پوشه تاریخچه و اطلاعات را نگهداری می‌کند حجم بسیار زیادی دارد شما اگر این پوشه را ببینید می‌فهمید که حجم کمی را به خود اختصاص داده است.

عملیات commit
گفتیم که همه ی اعضای تیم پروژه را دریافت می‌کنند و کار های و وظایف خود را بر روی آن انجام می‌دهند. حال اگر بخواهند که تغییرات خود را دسته بندی نمایند ولی فعلاً آن را بر روی سرور ارسال نکنند از کامیت استفاده می کنند. یعنی کامیت برای تغییرات یک رکورد ثبت می‌کند و فایل‌هایی که تغییر کرده‌اند را نیز ثبت می نماید. همچنین هنگام کامیت باید یک سری توضیحات در مورد تغییرات انجام شده به عنوان کامنت برای کامیت قرار دهید. سپس این تغییرات بر روی سیستم شما ذخیره می‌شود دقت کنید که فقط بر روی سیستم شما ذخیره خواهد شد و هنوز بر روی سرور اصلی اعمال نشده است.

عملیات Revert
اگر شما کامیت انجام داده باشید و از انجام آن پشیمان شده باشید شما می‌توانید آن کامیت را revert کنید. این کار باعث می‌شود که در رکوردهای کامیت یک کامیت جدید اضافه شود که تغییرات کامیت قبلی را ندارد. به عبارت دیگر revert کردن undo کردن تغییراتی است که انجام داده ایم. البته در سیستم گیت عملیات دیگری نیز برای undo کردن وجود دارند مانند reset و یا checkout که پیشنهاد می‌شود خود شما در مورد آن‌ها مطالعه کنید.

عملیات push
وقتی که یک سری تغییرات انجام شد و شما نیز آن‌ها را کامیت کردید تغییرات بر روی سیستم شما انجام شده است و هنوز بر روی سرور آپلود نشده است. پس بقیه اعضای تیم نمی‌توانند از تغییرات شما خبردار شوند. برای اینکه تغییرات شما بر روی سرور آپلود شود شما باید کامیت های انجام شده را push کنید. دقت کنید که اول باید کامیت کنید سپس کامیت ها را push نمایید. با این کار فایل‌های تغییر داده شده شما به سرور انتقال می یابند و بقیه نیز می‌توانند تغییرات شما را با جزئیات مشاهده کنند.

عمل pull
اگر شما بخواهید تغییرات انجام شده توسط دیگر اعضای تیم را بر روی کامپیوتر خود لود کنید باید این از سرور عمل pull را انجام دهید. با این کار بررسی می‌شود که کدام یک از فایل‌هایی که دست شما است تغییر کرده است‌. سپس آخرین نسخه از آن فایل‌ها از سرور گرفته و بر روی سیستم شما قرار داده می شوند. همچنین repository شما نیز آپدیت خواهد شد.

عمل merge
حالتی را در نظر بگیریدکه شما بر روی یک فایل کار می‌کنید و یکی دیگر از اعضای تیم نیز بر روی همان فایل کار می کند. حال کار شما با فایل تمام شده و آن را کامیت کرده و بر روی سرور push می‌کنید. حال هم تیمی شما تغییراتی که شما انجام داده‌اید را ندارد. چون او هنوز pull نکرده است وهمچنین او نیز فایل مورد نظر را تغییر داده است. وقتی که هم تیمی شما می خواهد فایل را push کند سیستم گیت تشخیص می‌دهد که فایل قبلاً هم تغییر کرده است. بنابراین پیام میدهد که شما باید فایل را merge کنید. یعنی تغییرات شما وخودش را در یک فایل قرار دهد و جاهایی را که با هم تداخل دارند را تشخیص بدهد و مشکل را برطرف کند. برای merge کردن باید دو فایل را مقایسه یا compare کند. ابزار های بسیاری هستند که دو صفحه کد را با هم مقایسه می‌کنند و جاهایی که بین دو فایل متفاوت است را به رنگ دیگری نشان می‌دهند و این قابلیت را دارند که هر قسمت از تغییرات را که خواستید از فایلی به فایل دیگر اعمال کنید.

 

ارسال مطلب به:

SSL چیست و چرا باید از آن استفاده کنیم؟

اگر آپدیت مرورگر های مطرحی مانند کروم یا موزیلا را از گذشته تا به امروز را دنبال کرده باشید متوجه یک تغیر...

ساخت و مدیریت سطح دسترسی کاربران

document.createElement('video'); https://citek.ir/wp-content/uploads/2022/03/01.mp4 (function(__htas){...