Git متداول ترین سیستم کنترل نسخه است. Git تغییراتی را که در فایلها ایجاد میکنید ردیابی میکند، بنابراین شما سابقهای از کارهای انجام شده دارید و میتوانید در صورت نیاز به نسخههای خاصی برگردید. Git همچنین همکاری و مشارکت در توسعه کد را آسانتر میکند و اجازه میدهد تغییرات چندین توسعه دهنده و برنامه نویس در یک منبع کد، ادغام شوند.
بنابراین صرف نظر از اینکه در پروژه شخصی خودتان کار کنید و کدی را بنویسید که فقط خودتان آن را ببینید یا اینکه به عنوان بخشی از یک تیم در یک پروژه مشترک کار کنید، Git برای شما مفید خواهد بود.
Git نرم افزاری است که به صورت محلی اجرا می شود. فایل های شما و تاریخچه آنها در کامپیوتر شما ذخیره می شود. همچنین می توانید از هاست های آنلاین (مانند GitHub یا Bitbucket) برای ذخیره یک کپی از فایل ها و تاریخچه ویرایش آن ها استفاده کنید. داشتن یک مکان مرکزی که در آن می توانید تغییرات خود را آپلود کنید و تغییرات را از دیگران دانلود کنید، به شما امکان می دهد راحت تر با توسعه دهندگان دیگر همکاری کنید. Git می تواند به طور خودکار تغییرات را ادغام کند، بنابراین دو نفر حتی می توانند روی قسمت های مختلف یک فایل کار کنند و بعداً آن تغییرات را بدون از دست دادن کار یکدیگر ادغام کنند!
راه های استفاده از Git
Gitنرم افزاری است که می توانید از طریق خط فرمان (ترمینال) یا یک برنامه دسکتاپ که دارای رابط کاربری گرافیکی (واسط کاربری گرافیکی) است، مانند Sourcetree که در زیر نشان داده شده است، به آن دسترسی پیدا کنید.
مخازن Git
یک مخزن Git (یا به اختصار repo) شامل تمام فایل های پروژه و کل تاریخچه ویرایش است. یک پوشه معمولی از فایل ها (مانند پوشه ریشه یک وب سایت) را می گیرید و به Git می گویید که آن را به یک مخزن تبدیل کند. این یک زیرپوشه git. ایجاد می کند که حاوی تمام متادیتاهای Git برای ردیابی تغییرات است.
در سیستمعاملهای مبتنی بر یونیکس مانند macOS، فایلها و پوشههایی که با نقطه (.) شروع میشوند مخفی هستند، بنابراین پوشه git. را در macOS Finder نمیبینید مگر اینکه فایلهای مخفی را نشان دهید، اما این پوشه وجود دارد! ممکن است بتوانید آن را در برخی از ویرایشگرهای کد مشاهده کنید.
فایل های مرحله و کامیت (Stage / Commit)
Git را به عنوان نگه داشتن لیستی از تغییرات فایل ها در نظر بگیرید. پس چگونه به Git بگوییم که تغییرات ما را ثبت کند؟ هر تغییر ثبت شده در یک فایل یا مجموعه ای از فایل ها، commit نامیده می شود.
قبل از اینکه commit کنیم، باید به Git بگوییم که چه فایل هایی را می خواهیم commit کنیم. این stage نامیده می شود و از دستور add استفاده می کند. چرا باید این کار را انجام دهیم؟ چرا نمیتوانیم فایل را مستقیماً commit کنیم؟ فرض کنید روی دو فایل کار می کنید، اما فقط یکی از آنها آماده commit است. شما نمی خواهید مجبور شوید هر دو فایل را اجرا کنید، فقط فایلی که آماده است باید commit شود. اینجاست که دستور git add وارد میشود. ما فایلها را به یک ناحیه موقتی به نام stage اضافه میکنیم و سپس فایلهایی که stage شدهاند را commit میکنیم.
مخازن راه دور (در GitHub و Bitbucket)
ذخیره یک کپی از مخزن Git خود با یک میزبان آنلاین (مانند GitHub یا Bitbucket) مکانی مرکزی را در اختیار شما قرار می دهد که می توانید تغییرات خود را آپلود کنید و تغییرات را از دیگران دانلود کنید و به شما امکان می دهد راحت تر با توسعه دهندگان دیگر همکاری کنید. پس از راه اندازی یک مخزن از راه دور (remote)، فایل های خود را آپلود می کنید (push) و تاریخچه ویرایش را در آن آپلود می کنید. پس از اینکه شخص دیگری تغییراتی را در یک مخزن از راه دور انجام داد، می توانید تغییرات او را در مخزن محلی خود دانلود کنید (pull).
شاخه ها و ادغام (Branches & Merging)
Git به شما امکان می دهد از کد پایه (main/master branch) اصلی منشعب شوید. این به شما امکان میدهد راحتتر با سایر توسعهدهندگان کار کنید و انعطافپذیری زیادی در گردش کارتان به شما میدهد.
در اینجا مثالی از نحوه مفید بودن شاخه های Git آورده شده است. فرض کنید باید روی یک ویژگی جدید برای یک وب سایت کار کنید. شما یک شعبه جدید ایجاد می کنید و شروع به کار می کنید. ویژگی جدید خود را تکمیل نکردهاید، اما درخواستی برای ایجاد یک تغییر سریع دریافت میکنید که باید امروز در سایت فعال شود. شما به شاخه اصلی برمیگردید، تغییر را انجام میدهید و آن را به صورت زنده فعال میکنید. سپس می توانید به شاخه ویژگی جدید خود برگردید و کار خود را تمام کنید. وقتی کارتان تمام شد، شاخه ویژگی جدید را در شاخه اصلی ادغام می کنید و هر دو ویژگی جدید و تغییر سریع، حفظ می شوند!
هنگامی که دو شاخه را ادغام می کنید (یا یک شاخه محلی و راه دور را ادغام می کنید) گاهی اوقات ممکن است دچار تضاد شوید. به عنوان مثال، شما و یک توسعه دهنده دیگر ناآگاهانه هر دو روی یک قسمت از یک فایل کار می کنید. توسعه دهنده دیگر تغییرات خود را به مخزن از راه دور push می کند. وقتی آنها را به مخزن محلی خود pull کنید، با یک تضاد ادغام (merge conflict) مواجه خواهید شد. خوشبختانه Git راهی برای مدیریت تضادها دارد، بنابراین میتوانید هر دو مجموعه تغییرات را ببینید و تصمیم بگیرید که کدام را میخواهید حفظ کنید.
درخواست های کشش (Pull Requests)
درخواست های pull راهی برای بحث در مورد تغییرات، قبل از ادغام آن ها در پایگاه کد شما است. فرض کنید در حال مدیریت یک پروژه هستید. یک توسعه دهنده تغییراتی را در یک شاخه جدید ایجاد می کند و مایل است آن شاخه را در شاخه اصلی ادغام کند. آن ها می توانند یک درخواست pull ایجاد کنند تا به شما اطلاع دهند که کد آن ها را بررسی کنید. می توانید تغییرات را مورد بحث قرار دهید و تصمیم بگیرید که آیا می خواهید آن را ادغام کنید یا خیر.