بسیاری از برنامه نویسان ، طراحان گرافیک و تدوین گران فیلم را دیده ام که پروژه های خود را در کامپیوتر با اسم های عجیبی ذخیره می کنند. مثلا برخی برای پروژه خود از روش عدد گذاری استفاده می کنند که بدانند آخرین نسخه ای که روی آن کار می کردند کدام بود. برخی هم از اسم هایی مانند final, real استفاده می کنند که ببینید نسخه نهای کدام است برخی هم از اسم هایی مانند ، Project_v2_Backup.zip یا بدتر از همه Project_Final_FINAL_REAL.zip!
دلیل این کار چیست؟ دلیل این است که شخصی که روی پروژه کار می کند می خواهد یک تغییر بر روی فایل بدهد ولی نمی خواهد قبلی ها را کاملا از بین برود و در صورت لزوم به قبلی بازگردد.
به عنوان یک برنامه نویس شاید برای شما هم پیش آمده باشد که یک راه حل یا روش را روی پروژه پیاده سازی می کنید و بعد از آن از کاری کردید پشیمان می شوید و آرزو می کنید که کاش می شد کل پروژه را به حالت قبل برگرداند.
خبر خوب این است که اگر برنامه نویس هستید راهی وجود دارد که نسخه های مختلف پروژه را حفظ کند و هر وقت که لازم بود به عقب برگردید مانند یک ماشین زمان در زمان سفر کنید. این ابزار به قدری پرکاربرد است که بعد از آن که یاد گرفتید همیشه از آن استفاده خواهید کرد. گیت یک ابزار است که افراد زیادی از جمله برنامه نویسان و تولید کنندگان محتوا و .... از آن استفاده می کنند حالا چه تازه کار باشند یا ارشد و متخصص.
گیت (Git) دقیقا چیست؟ به زبان ساده
گیت یک سیستم برای نگهداری نسخه های مختلف است اصطلاحا سیستم کنترل نسخه یا version control system است. همانطور که گفتم یک ماشین زمان برای پروژه شما است که هروقت که خواستید می توانید به هر زمانی از پروژه که لازم داشتید سفر کنید.
گیت را می توان به شکل یک دفرچه خاطرات از پروژه دید ک هر بار هر تغییری که روی پروژه انجام گرفت یک صفحه از گیت را برای نوشتن آن در نظر می گیریم و آن را همراه با توضیحات و کارهایی که انجام شده ثبت می کنیم. که به این کار commit گفته می شود.
حال هروقت که لازم بود به هر علتی به عقب برگردیم می توانیم به هر مرحله ای از پروژه که لازم بود برگردیم.
تفاوت گیت (Git) و گیت هاب (Github)
این یک اشتباه رایج است که هردوی گیت و گیت هاب را یکی می دانند ولی در واقع کاملا متفاوت هستند.
گیت نرم افزار و ابزاری برای کنترل نسخه پروژه شماست(همان ماشین زمان) و شما می توانید آن را حتی روی کامپیوتر خانگی خود یا لپتاپ نصب کنید و به صورت محلی از آن استفاده کنید بدون آن که به اینترنت و سایت نیازی داشته باشید.
Github یک وب سایت است که پروژه های گیت خودتان را می توانید بر روی آن قرار دهید. گیت هاب به شما اجازه می دهد که commit ها و تغییرات گیت را روی وب و اینترنت ذخیره کنید که فقط روی سیستم خودتان نباشد و حتی بتوانید آنها را با همکارانتان و بقیه افراد به اشتراک بگذارید و یا به صورت تیمی بتوانید بر روی پروژه کار کنید.
به صورت ساده گیت یک ابزار است و گیت هاب خانه آن ابزار.
چرا گیت یک «باید» است نه یک «انتخاب»؟
حال که با مفهوم گیت آشنا شدیم ببینیم که چرا انقدر یادگرفتن و استفاده از آن واجب است.
مدیریت نسخه های مختلف پروژه
با استفاده گیت شما دیگر هیچ کدی را از دست نخواهید داد و هر وقت لازم بود می توانید به آن برگردید. همچنین شما می توانید همه تغییرات را ردیابی کنید و لاگ کاملی از تغییرات انجام شده داشته باشید. همچنین می توانید بفهمید که چه شخصی چه تغییری روی کد انجام داده و این تغییر در چه زمانی صورت گرفته است. همچنین در صورت بروز خطا یا اشتباه به راحتی می توانید به عقب برگردید و تفاوت ها را ببینید و استرس و ترس نداشته باشید.
کار تیمی
برنامه نویسی یک کار انفرادی و تک نفره نیست. تقریبا تمام پروژه های واقعی به صورت تیمی پیش می رود. حال اگر از گیت استفاده نکنیم و تیم ما 10 نفره باشد 10 نسخه مختلف از پروژه داریم که ادغام تغییرات آنها و یکپارچه سازی آن بسیار دشوار یا حتی فاجعه خواهد بود.
با استفاده از گیت در کار تیمی هر کدام از اعضا نسخه خودش را دارد و بر روی آن کار می کند و در نهایت تغییراتی را که بر روی پروژه انجام داده است را ثبت می کند و بعدا همه این تغییرات به صورت هوشمندانه ادغام خواهد شد و دیگر نیازی نیست که کدها را به صورت زیپ برای هم ارسال کنید و دنبال این باشید که هرکدام از اعضا کجا را تغییر داده اند و تغییری که داده اند چه بوده. اگر دو نفر همزمان یک فایل را تغییر دهند گیت هشدار خواهد داد که تداخل (Conflict) به وجد آمده است و ابزارهایی را در اختیار شما قرار داده است که تداخل ها را حل کنید.
Branch یا شاخه سازی
فرض کنید که می خواهید یک قابلیت جدید به پروژه اضافه کنید . قابلیتی که در نظر دارید اضافه کنید ممکن است که چالش هایی داشته باشد و چند روز زمان ببرد. خب در این مدت چند روز شما روی فایل های پروژه تغییراتی را اعمال می کنید. گیت به شما امکان می دهد که یک شاخه یا کپی موازی از پروژه بگیرید و همه تغییرات را روی آن انجام دهید و تست های لازم را بگیرید و وقتی که قابلیت جدید بدون مشکل و به صورت کامل شده در آمد با شاخه اصلی ادغام (Merge)کنید. در این مدتی که شما روی شاخه کار می کنید شاخه اصلی دست نخورده و سالم است و به کار خود ادامه می دهد.
ویترین کار شما (Portfolio)
برای هر برنامه نویس پروفایل گیت هابش مانند رزومه اوست. وقتی که شما برای یک موقعیت شغلی اقدام کنید اولین جایی که مدیرفنی یا مدیرپروژه برای تحقیق درباره شما مراجعه می کند پروفایل گیت هاب شماست. تا ببیند که اولا شما بر روی چه پروژه هایی کار کرده اید و سطح تخصص شما در چه حد است و ثانیا چطور با ابزارهایی مانند گیت کار کرده اید. داشتن یک پروفایل گیت هاب فعال و تمیز نشان حرفه ای بودن شماست. دقت داشته باشید که امروزه بلد بودن گیت برای برنامه نویس مانند بلد بودن تایپ برای یک نویسنده است. اگر برنامه نویس هستید مهم نیست از چه زبان و یا تکنولوژی استفاده می کنید گیت را باید بلد باشید زیرا هیچ شرکت معتبری در دنیا وجود ندارد که از سیستم کنترل نسخه استفاده نکند.
آیا یادگیری گیت سخت است؟
گیت ابزارها و دستوارت بسیار زیاد و گاهی دستورات پیچیده ای دارد که اگر بخواهید همه آنها را یاد بگیرید باید زمان قابل توجهی را صرف کنید. اما خبر خوب این است که 90 درصد کارهای روزمره و روزانه برنامه نویسان فقط به استفاده از چند دستور ساده از گیت خلاصه می شود و بیشتر به این دستورات نیاز دارید. به عنوان برنامه نویس باید بتوانید پروژه ها را از شاخه اصلی بگیرید و بتوانید بر روی آن کار کنید و نهایتا بعد از این که کار شما تمام شد و وظیفه شما به اتمام رسید تغییرات خود را برای نسخه اصلی ثبت کنید. شخصی که وظیفه مدیریت پروژه و سایر برنامه نویسان را دارد خب باید دستورات تخصصی تر را هم بلد باشد. دستوراتی که برنامه نویسان بیشتر از بقیه استفاده می کنند و بیشتر با آنها سر و کار دارند شامل موارد زیر است:
- git add (برای اضافه کردن فایلها به لیست تغییرات)
- git commit (برای ثبت "عکس فوری" یا همون نقطه ذخیره)
- git push (برای فرستادن تغییرات به گیتهاب)
- git pull (برای گرفتن تغییرات بقیه از گیتهاب)
- git branch (برای ساختن شاخه جدید)
یادگیری این دستورات شاید یک یا دو ساعت زمان لازم داشته باشد ولی با این دستورات شما می توانید از گیت استفاده کنید.
جمع بندی
گفتیم که گیت یک مهارت اساسی است و همه برنامه نویسان و نه فقط برنامه نویسان حرفه ای باید آن را بلد باشند. یادگیری گیت این اعتماد به نفس را به برنامه نویسان می دهد که بتوانند بدون ترس کد بنویسند و کد خود را تغییر بدهند و آزمایش کنند. می توانید با استفاده از گیت در پروژه های بزرگ متن باز مشارکت کنید و از فرصت های شغلی استفاده کنید.
نظرات کاربران (0)