چرا در هر آگهی استخدام برنامه نویسی، عبارت “آشنایی با git یا tfs” به چشم می خورد؟ زیرا تمام پروژه های برنامه نویسی که در شرکت ها در حال انجام است توسط یک تیم پیاده سازی می شوند و کار تیمی نیاز به یک ورژن کنترلر از جمله گیت هاب یا tfs دارد. هر چند در ادامه متوجه می شوید که برای یک پروژه انفرادی هم بهتر است از git یا tfs استفاده کرد.
توضیح سریع برای github چیست؟
هنگامی که از GitHub در پروژه استفاده می شود هر کدی که نوشته می شود روی سرور آپلود می شود و هر تغییری که شما در برنامه ایجاد می کنید به صورت ورژن بندی شده روی سرور آپلود می شود پس با این روش یک تیم روی یک پروژه که روی سرور است به صورت تیمی کار می کنند و هیچ کدی پاک نمی شود و از دست نمی رود و هرکسی هر تغییر می دهد مشخص است و هر کسی در هر لحظه می توانید آخرین ورژن برنامه را از سرور بگیرد.
فرض کنید شما وارد یک شرکت شده اید که از git استفاده می کند در آنجا احتمالا مراحل زیر پیش گرفته می شود.
- یک سیستم برای شما فراهم می شود، در محیط برنامه نویسی به git متصل شده و آخرین ورژن برنامه از سرور برای شما گرفته می شود.
- شما اولین فایلی که می خواهید تغییر دهید را باز می کنید، پس آن کد به حالت ویرایش در می آید و دیگران نمی توانند آن را ویرایش کنند.
- شما کار خود را روی آن فایل تمام کرد و submit می کنید و فایل شما روی سرور آپلود می شود.
- سپس هنگامی که همکاران آخرین ورژن را از سرور می گیرید فایل جدید شما هم در بین این فایل ها می باشد.
- حال فرض کنید که شما اشتباه کرده اید. به راحتی می توان ورژن قبلی که روی سرور بوده است را باز کرده و آن فایل را بازیابی کرد.
- حال فرض کنید شما خود به تنهایی روی یک پروژه کار می کنید، فرض کنید هارد سیستم شما می سوزد، خیلی راحت یک سیستم دیگر می آورید و آخرین ورژن کد های خود را از سرور دانلود می کنید.
توجه: غیر از اولین بار که کل پروژه دانلود می شود یا آپلود می شود، در بقیه حالت ها انقدر حجم فایل ها کم هست که اصلا کار با سرور به چشم نمی آید و با همین اینترنتی که داریم راحت کار می کند.
توضیح تخصصی تر برای GitHub چیست
ابتدا ببینیم git چیست
git یک ورژن کنترلر open source است که می توان آن را روی ویندوز یا لینوکس نصب کرد و یک فولدر را به آن معرفی کرد تا آن هر تغییری ک در فولدر ایجاد می شود را ثبت کند. اگر همان چند ویدیو باز از این آموزش گیت را ببینید، اطلاعات زیادی را به صورت ویدیویی متوجه می شوید.
گیت هاب چیست
گیت هاب سرویسی است که از گیت استفاده کرده است و امکاناتی را ایجاد کرده است که می توان پروژه های نرم افزار را روی آن منتشر کرد و شرکت های نرم افزاری وقتی از گیت حرف می زنند منظور آنها همان گیت هاب است. اخیرا تمام محیط های برنامه نویسی به گیت هاب وصل می شود و امکانات گیت هاب را در اختیار شما قرار می دهند.
در ادامه دو اصطلاح تخصصی در مورد گیت هاب را بررسی کنیم:
- گزینه merge کردن
- گزینه Forking & Branching
توضیح در مورد ابزار مرج merge
امکان merge کردن
این امکان وجود دارد که روی یک فایل چند برنامه نویس کار کنند. در این حالت فرض کنید که برنامه نویس اول یک فایل را ویرایش کرده و بروی سرور آپلود کرده است، وقتی که برنامه نویس دوم تغییرات خود را می خواد ارسال کند، برنامه conflict به معنی تضاد را نشان می دهد که یعنی اون فایلی که شما تغییر داده اید را قبلا کسی تغییر داده است، در این حالت چند گزینه دارید:
- یا مطمئن هستید که فایل شما درست است و فایل شما جای گزین فایل سرور می شود.
- یا مطمئن هستید فایلی که همکار اول اپلود کرده است یعنی فایل درون سرور درست است، پس فایل شما ندیده گرفته می شود.
- یا از ابزار مرج یا یکی کردن استفاده می کنید، در این حالت اختلاف بین کد های شما و سرور برای شما نمایش داده می شود و شما می توانید بخشی از کد خود و بخشی از کد سرور را استفاده کنید و مرج کنید تا یک فایل جدید و یکپارجه ایجاد کنید. (نگران نباشید استفاده از این ابزار راحتر از توضیح دادن آن است.)
چند شاخه شدن (Forking & Branching)
این موارد از مفاهیم پایه ای گیت می باشند.
زمانی که پروژه ها بصورت کد باز تعریف می شوند ، شما می توانید سورس پروژه را برداشته و تغییرات دلخواه خود را در آن اعمال نمایید. اگر احساس کردید تغییرات شما برای پروزه مفید بوده است می توانید توسط Git درخواست اعمال تغییرات خود را به سازنده اصلی آن کد بفرستید و در صورت تائید سازنده کد ، تغییرات شما به عنوان نسخه جدید در صفحه اصلی پروژه درج می گردد.
این امکان به شما اجازه می دهد تا ده ها یا شاید صدها برنامه نویس در لحظه بر روی پروژه شما کار کند و نسخه بهبود یافته را برای شما ارسال کند.
پس از آن دیگر به شما بستگی دارد که آن نسخه از تغییرات را بپذیرید یا خیر.
توسط Branching نیز توسعه دهندگان تائید شده می توانند بدون اینکه به کد اصلی آسیبی برسد مشکلات آن را برطرف کنند و پس از برطرف کردن آن نسخه اصلاح شده را در نسخه اصلی اعمال کنند.
فواید گیت
پس فواید گیت هاب را به طور خلاصه در زیر مرور می کنیم.
- خوبی این نوع سرویس این است که توسعه دهندگان مختلفی می توانند بر روی یک پروژه کار کنند و هر تغییر نیز به نام همان توسعه دهنده ثبت می گردد.
- گاهی حتی با وجود تست، خطا هایی در پورژه وجود دارد و اگر پروژه یک محصول پر استفاده باشد بی خطا بودن خیلی مهم است، با استفاده از گیت به راحتی کد های قبلی باز می گردد و پروژه قبلی منتشر می شود که بدون خطا می باشد.
- مشخص است که هر بخش از کد توسط چه کسی نوشته شده است.
- امکان کار جمعی برای پروژه های اپن سورس با استفاده از امکان Forking & Branching
git توضیح داده شد پس tfs چیست
نحوه کار کرد tfs دقیقا مانند git هست فقط ویژه .net است و همراه با ویژال استدیو می باشد و سرور فایل های شما هم به جای گیت هاپ سایت visualstudio.com خواهد بود. البته با ویژال استدیو به گیت هاب هم می توان متصل می شود. همچنین یک تغییراتی هم به جای دکمه اعمال کار ها وجود دارد به طور مثال برای ارسال ویرایش ها به سرور در tfs عبارت “submit” را دارید در حالی که در گیت “commit” است.
امیدوارم بصورت کلی با مفاهیم گیت(Git) آشنا شده بشید. از این پس تنها کافیست در وب سایت github.com عضو شوید و مقداری با این سرویس کار کنید تا با جزئیات آن در عمل آشنا شوید. اگر می خواهید به خوبی بر گیت مسلط شوید این دوره آموزش گیت می تواند به طور کامل راهنما شما باشد.