برهیچ کسی پوشیده نیست که دهه اول قرن ۲۱ جز یکی از مهم ترین نقاط عطف تاریخ در حوزه تکولوژی و ارتباطات بوده است. گسترش اینترنت، قدرت نمایی قول های تولید تلفن هوشمند، معرفی آیفون، ظهور فیسبوک، پیشتازی گوگل و مایکروسافت، خلق بیت کوین و… شاید از مهم ترین اتفاقاتی بود که در این دهه ما شاهد آن بودیم.
دنیای برنامه نویسی نیز در این سال ها با اتفاقات جالب و البته تاثیر گذاری روبرو بود. درست در سال ۲۰۰۵ بود که کارکنان لینوکس هنگام کار بر روی پروژه لینوکس کرنل و درست زمانی که از سیستم کنترل منابع bitkeeper که برای نگهداری و مدیریت کدهای پروژه استفاده می شد، موفق به خلق گیت شدند.
در آن سال ها، لینوکس توروالدز به دنبال سیستمی بود تا بتواند با استفاده از آن مثل بیت کیپر مدیریت پروژه را تماما در دست داشته باشد و یک سال بعد درست در ۱۶ ژوئن سال ۲۰۰۶ توانست با استفاده از گیت مدیریت ریلیز 2.6.12 کرنل را بر عهده بگیرد.
گیت در زبان انگلیسی واژه ای مهجور است و به معنای فردی است که زاده شده برای اذیت و آزار دیگران. ناخوشایند و نچسب! اما همین مخلوق ناخوشایند توانست در زمان بسیار کوتاهی به یکی از ضروری ترین ابزارهای مورد نیاز توسعه دهندگان و برنامه نویسان تبدیل شد.
آنچه در این نوشته خواهیم داشت
گیت (Git) چیست؟
اگر شما قصد کار بر روی یک پروژه را دارید ممکن است بخواهید تغییرات انجام شده توسط سایر توسعه دهندگان را رصد کنید، اشکالات و ویژگی ها را تک به تک ببینید و به صورت کلی پروژه را مدیریت کنید.
گیت یک سیستم کنترل (version control system) است که توسعه دهندگان، در سراسر دنیا می توانند از آن استفاده کنند و با دیگر توسعه دهندگان همکاری کنند.
گرچه گیت می تواند به خودی خود موضوعی پیچیده به نظر برسد اما من سعی دارم در این مقاله به ساده ترین شکل، مفاهیم اصلی و بنیادی Git را به شما معرفی کنم تا بتوانید تا حد ممکن از آن در مسیر یادگیری برنامه نویسی استفاده کنید.
سیستمهای کنترل نسخه، تغییرات و بازنگریهای توسعهدهندگان را در یک مخزن مرکزی ذخیره میکنند.
با این کار همکاری بین توسعهدهندگان آسان میشود؛ به این شکل که هر توسعهدهنده میتواند نسخهی جدید را دانلود کند، تغییرات را در آن اعمال و سپس آپلود کند. از طرفی کلیهی توسعهدهندگان قادر به مشاهدهی تغییرات جدید، دانلود آنها و مشارکت در پروژه خواهند بود.
اهمیت یادگیری گیت
گیت به شما کمک می کند تا در پیشبرد یک پروژه کمتر دچار سردرگمی شوید و بتوانید بعد از اتمام آن نیز به خوبی آن را مدیریت کنید. تفاوت عمده گیت با سایر VCSها در این است که طرز تفکر گیت و تجربه کاربری آن کاملا با سایر سیستم ها مثل subversion، CVS یا performance متفاوت است گرچه ممکن است از لحاظ رابط کاربری شباهت هایی بین آن ها باشد.
کاربردهای گیت Git
- امکان ایجاد تغییرات و ارائه شرح تغییرات در یک فهرست
- بهروزرسانی در مخزن محلی و ادغام از راه دور آن با یک شاخه دیگر
- مناسب برای پروژههایی که بیش از یک نفر روی آن کار میکند و ایجاد تعامل میان اعضا در پروژههای گروهی
- امکان اضافه کردن برچسبها به هر نسخه نرمافرار
- ارائه تاریخچه و امکان مطالعه و بررسی سوابق تاریخی مخزن
- امکان جایگزین کردن تغییرات و بازیابی کدهای قبلی در صورت بروز مشکل در مخزن
مخازن (ریپازیتوری) گیت
سیستم کنترلی گیت، از طریق وب اپلیکیشن هایی نظیر github و gitlab به صورت کاملا رایگان در اختیار توسعه دهندگان قرار گرفته است. مزیت این سیستم ها در این است که شما وقتی سورس کدهای خود را در آن ها قرار می دهید دیگر هیچ نگرانی در مورد از بین رفتن منبع کدهای خود نخواهید داشت.
همچنین شما در این وبسایت ها قادر خواهید بود تا پروژه ها و سطوح دسترسی مختلف تعریف کنید و کپی های متعددی از پروژه ها نگهداری کنید.
و اما مهم ترین ریپازیتوری های گیت:
- گیتهاب (GitHub): در سال 2008 راهاندازی شده و اخیراً از سوی مایکروسافت خریداری شده است. در پاییز 1397 حدود 31 میلیون کاربر داشته است.
- گیتلب (GitLab): در سال 2011 راهاندازی شده و تحت مالکیت شرکت GitLab است.
- بیتباکت (BitBucket): در ژوئن 2008 راهاندازی شده است و تحت مالکیت شرکت نرمافزاری Atlassian قرار دارد.
مهم ترین دستورات گیت
برای راهنمایی گرفتن دربارهٔ یک دستور:
git help
برای اجرای تنظیمها از config استفاده میشود. جزئیات استفاده از این دستور را میتوان با دستور زیر بدست آورد.
git help config
دستور ایجاد پوشه اصلی:
<آدرس پوشه اصلی> git init
دستور استفاده از یک گیت از قبل ساخته شده:
git clone ssh://<user> @ <host> /path/to/repo.git
استفاده میشود. دستور اضافه کردن فایل جدید:
<نام فایل> git add
دستور حذف فایل
<نام فایل> git rm --cached
دستور مشاهده وضعیت:
git status
بررسی تفاوتها در کد نوشته شده و اعمال نشده:
git diff
دستور اطلاع از تاریخچه
git log
دستور قراردادن تغییرها:
git push
دستور اعمال تغییرها:
git commit
دستور دریافت تغییرها از روی تاریخچه:
git pull
دستور الحاق برچسب:
git tag
دستور بازگرداندن یک فایل به آخرین وضعیت ذخیره شده:
<نام فایل> git checkout HEAD
برای برگرداندن تغییرهای یک دستور خاص:
<git revert <commit-id
اصلاح یک دستور:
git commit -amend
نصب گیت
برای بررسی اینکه آیا گیت را بر روی رایانه خود نصب کرده اید یا خیر کافی است در ترمینال خود دستور زیر را تایپ کنید:
git --version
اگر گیت قبلا نصب شده باشد نسخه آن به شما معرفی می شود. در غیر این صورت کافی است وارد وبسایت Git شوید شوید و به آسانی با توجه به سیستم عامل خود، نسخه مورد نظر را رسم کنید.
شروع کار با گیت
برای شروع کار با گیت به ترمینال خود (your terminal) بروید و دستور زیر را در پروژهای که میخواهید ایجاد کنید وارد کنید. این دستور دایرکتوری (directory) پروژه را آغاز میکند:
<span style="font-size: 16px;">git init</span>
دستور زیر را برای اضافه کردن پرونده برای ردیابی Git اجرا کنید. با این کار این پروندهها به قسمت مرحله (staging) اضافه میشوند:
<span style="font-size: 16px;">git add <filename_one></span>
دستور زیر را اجرا کنید و چگونگی تغییرات خود را در این پروندهها انجام دهید:
<span style="font-size: 16px;">git commit -m "<add a commit message here>"</span>
هنگامی که این کد را اجرا کردیم میتوانیم تغییرات مد نظر خود را اعمال کنیم مانند:
<span style="font-size: 16px;">git push</span>
اجرا این کد باعث میشود تا کد اصلی از شاخه the master branch in the local به the master branch از راه دور سوق داده شود. از git pull برای کشیدن آخرین تغییرات از مخزن از راه دور به مخزن محلی استفاده میشود. کد (repository code) از راه دور توسط توسعهدهندگان مختلف به طور مداوم به روز میشود:
<span style="font-size: 16px;">git pull origin master</span>
در مرحله بعد شما باید گیت کلون را ایجاد کنید. از گیت کلون برای اداره کردن مخزن از راه دور استفاده میشود:
<span style="font-size: 16px;">git clone [repository url]</span>
تمام!
حال شما میتوانید گیت را در رایانه خود اجرا کنید و سیستمهای امنیتی خود را توسعه دهید. ایجاد هرگونه تغییر بیشتر در شاخه اصلی گیت مستلزم انجام مجدد تمام این دستورالعملها است پس کاملا با دقت تمام این کدها را وارد کنید تا نیاز به اجرای مجدد کدها نداشته باشید.
جمع بندی
یکی از مهم ترین موضوعاتی که در بحث آموزش طراحی وبسایت باید به آن پرداخته شود، آشنایی با گیت، گیت هاب و گیت لب است.
هر برنامه نویس و توسعه دهنده وبسایت میبایست در این بخش با پیکربندی گیت، لایف سایکل ها، ایجاد و مدیریت انشعاب ها در گیت، رفع تداخل ها، تگ گذاری، انبار کردن کدها و … به طور کامل آشنا شود و بتواند پروژه خود را در این سیستم به خوبی مدیریت کند. یادگیری گیت به عنوان یک مکمل بسیار مهم، برای تمامی برنامه نویسان و توسعه دهندگان یک موضوع اساسی است.
امیدوارم این مقاله به عنوان مقدمه ای جهت آشنایی شما با گیت مفید فایده بوده باشد.