آموزش Git برای توسعه دهندگان اندروید (بخش اول) – از صفر تا صد


Git محبوبترین ابزار رایگان VCS توزیع یافته محسوب میشود. VCS به «سیستم کنترل نسخه» (Version Control System) گفته میشود. این سیستم تغییراتی را که روی فایل یا مجموعهای از فایلها در طی زمان ایجاد میشوند، ثبت میکند و بدین ترتیب میتوانیم سابقه تغییرات را هر زمان ردگیری کنیم.
انواع VCS-ها
انواع VCS-ها را بر اساس حالت عملیات به صورتهای زیر دستهبندی میکنیم:
- VCS محلی
- VCS متمرکز
- VCS توزیع یافته
در ادامه هر کدام از آنها را جداگانه توضیح میدهیم.
VCS محلی
- VCS محلی نخستین مرحله از سیستم کنترل نسخه است.
- در این روش یک پایگاه داده محلی برای ردگیری تغییرات از طریق ذخیرهسازی مجموعههای patch، مورد استفاده قرار میگیرد.
- از جمله معایب VCS محلی این است که هر زمان صرفاً برای یک توسعهدهنده منفرد مفید است. اگر تعداد توسعهدهندهها بیش از یکی باشد، نمیتوانند تغییرات را از سیستمهای مختلف با یکدیگر هماهنگ کنند.
VCS متمرکز
- برای غلبه بر محدودیتهای استفاده از VCS از سوی چندین توسعهدهنده، مجموعههای patch در یک مکان منفرد در سرور مرکزی ذخیره میشوند که VCS مرکزی نام دارد.
- بدین ترتیب مدیران از طریق سرور مرکزی کنترل بیشتری روی کد پیدا میکنند و میتوانند سطوح دسترسی مختلفی برای توسعهدهندگان متفاوت تعریف کنند.
- اینک کاربر میتواند به سادگی پروژه را از هر رایانهای بررسی کند و تغییرات را اجرا کرده و به سرور، «کامیت» (commit) کند.
- نمونههایی از VCS-های متمرکز شامل CVS، Subversion، Perforce و غیره هستند.
- از جمله معایب VCS متمرکز این است که اگر سرور مرکزی حتی یک ساعت خاموش شود، در طی این ساعت هیچ کس نمیتواند تغییراتش را در پایگاه داده نسخه ذخیره کند. اگر پایگاه داده مرکزی خراب شود و هیچ پشتیبان درستی موجود نباشد، در این صورت همه چیز از دست خواهد رفت. این همان عیبی است که در VCS محلی نیز وجود دارد و در این حالت صرفاً متمرکز شده است.
VCS توزیع یافته
- برای غلبه بر معایب VSC متمرکز، در این روش کل ریپازیتوری در هر زمان قابل دانلود است. بنابراین در هر مراجعه یک پشتیبانی کامل از همه دادهها ایجاد میشود.
- اگر هر سروری از کار بیفتد، در این صورت ریپازیتوری از هر رایانه محلی یا ریپازیتوری های کلاینت، میتواند مجدداً به سرور «پوش» (push) شود.
- بنابراین میتوانیم با گروه متفاوتی از افراد به روشهای مختلف و به صورت همزمان درون پروژه واحد، تعامل داشته باشیم.
- این ریپازیتوری محلی با کارکرد کامل امکان کار آفلاین یا ریموت را تسهیل میکند.
- نمونههایی از VCS توزیع یافته شامل Git ، Bitbucket و غیره هستند.
اصطلاحهای Git
در انتهای این نوشته و پیش از آن که شروع به استفاده عملی از Git بکنید، بهتر است ایدههایی در مورد برخی اصطلاحهای مقدماتی آن داشته باشید.
- Master: شاخه اصلی ریپازیتوری.
- Clone: عمل کپی کردن یک ریپازیتوری به دایرکتوری کاری.
- Commit: عمل تحویل فایلها به ریپازیتوری محلی.
- Fetch: عمل واکشی کردن بهروزرسانیهای رخ داده در سرور ریموت
- Merge: عمل ادغام شاخهها.
- Pull یعنی (Fetch+Merge): عمل واکشی و ادغام شاخهها به طور همزمان
- Push: عمل جابهجایی کامیت محلی به ریپازیتوری ریموت.
- Remote: محل ریموت ریپازیتوری.
- SHA: کلید شناسایی یکتا برای کامیت
- Head: کامیتی که فضای کاری ریپازیتوری به آن اشاره دارد.
- Branch: نسخه ریپازیتوری که از پروژه کاری اصلی انشعاب یافته است.
امیدواریم این نوشته ایدههایی در مورد سیستم کنترل نسخه و این که چرا Git یک VCS نامیده میشود، به شما داده باشد. در بخش بعدی این نوشته در مورد فهرستی از عملیات Git که امکان یکپارچهسازی Git و افزودن آن به پروژههای اندروید را فراهم میسازد، صحبت کردهایم.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش گیت (Git) برای مدیریت نسخه توزیع شده
- مجموعه آموزشهای برنامه نویسی اندروید
- راهنمای پیشرفته Git برای مبتدیان — به زبان ساده
- چگونه از گیت (Git) به طرز موثرتری استفاده کنیم؟ — به زبان ساده
==