۲۴دی

با گیت نسخه های پروژه را کنترل کنید

امروز مجبورم به دستور استاد یک پست در بلاگم با موضوع گیت بنویسم، من هنوز یک روز نمیشه که با گیت آشنا شدم و باید چیزهایی که یاد گرفتم رو در قالب یک پست منتشر کنم، قبل از این که بخوام درباره ی اون بنویسم جا داره درباره برنامه های کنترل نسخه یا VCS ،(مخفف شده‌ی: Version Control System) یه توضیحاتی ارائه بدم، کنترل نسخه به معنی دنبال کردن تغییرات اعمال شده در فایل های پروژه است، وظیفه این برنامه ثبت تغییرات انجام شده بر روی فایل های پروژه است، مثل ویرایش کردن، حذف کردن و … به طوری که هر وقت بخواهیم بتونیم به نسخه های مختلف پروژه دسترسی پیدا کنیم.

در اصل یک برنامه کنترل نسخه یا همون VCS، به ما این امکان رو میدن که فایل های پروژه را به ویرایش های قبلی برگردونیم و تغییراتی که اعمال کردیم روی هر فایل را بعد از پیشرفت پروژه ببینیم و انها را با وضعیت قبلی شون مقایسه کنیم، در صورتی که پروژه بزرگ باشد و به صورت گروهی روی اون کار کنیم، می تونیم ببینیم چه کسی در هر مرحله پروژه را ویرایش کرده و اگر در جایی اشتباهی صورت گرفته، پروژه را به حالت قبل از ویرایش برگردونیم.

و اما گیت git، یک سیستم کنترل نسخه است که بر خلاف سایر سیستم های کنترل نسخه که اطلاعات مربوط به هر پروژه را بر اساس تغییرات صورت گرفته در فایل ها ذخیره می کنند نیست، این سیستم ها به اطلاعات یک پروژه این طور نگاه می کنند که یک مجموعه فایل هستند که در پروژه وجود دارند، و مجموعه دوم، تغییراتی هستند که در گذر زمان روی فایل ها ی موجود اعمال شده اند، در git هر بار که شما یک یا چند فایل از پروژه را تغییر داده و آن را در git ذخیره می کنید، (اصطلاح commit کردن)، git یک تصویر از نسخه تغییر یافته آن فایل ها را تهیه می کند و یک مرجع به آن اختصاص می دهد.

برای درک بهتر موضوع شاید لازم باشه یه مثال خوب پیدا کنم و بزنم، «به عنوان یک مثال ساده، تصور کنید یک می خواهید حرکت یک توپِ در حال حرکت را ثبت کنید. کاری که سیستم هایی مانند SVN انجام می دهند این است که در لحظه اول توپ را در مکان اصلی آن ثبت می کنند و در لحظه های بعدی از حرکت توپ، تنها “جابجایی” و یا “تغییر مکان” توپ را دنبال کرده و ذخیره می کنند. اما git به جای ذخیره تغییر مکان توپ، در هر لحظه یک عکس یا snapshot از حرکت توپ تهیه کرده و ذخیره می کند. به این ترتیب ما در هر لحظه یک توپ داریم که موقعیت مکانی آن تغییر کرده اما وابسته به موقعیت ابتدایی آن نیست!»

۳ حالت یا وضعیت اصلی برای فایل های شما در git وجود دارد:

  1. سپرده شده یا “Committed”
  2. تغییر یافته یا “Modified”
  3. به روی صحنه رفته یا “Staged”

Committed به این معنی است که اطلاعات شما به طور ایمن در پایگاه داده‌ی git ذخیره شده است. Modified به این معنی است که شما فایل را وبرایش کرده و تغییر داده اید اما هنوز Commit نکرده‌اید (در git ذخیره نکرده‌اید.) Staged به این معنی است که شما یک فایل تغییر یافته یا Modify شده را برای قرار گیری در Commit بعدی به روی صحنه برده‌اید. (یعنی علامت گذاری نموده اید تا در اولین Commit در git ذخیره شود.)

پوشه‌ی git یا همان repository که با نام git. در پوشه‌ی محیط کار (پروژه) ایجاد می گردد، جایی است که تمام اطلاعات پس از هر Commit در آن ذخیره می شود. این بخش مهمترین قسمت از git است که تاریخچه تغییرات پروژه را دربر می گیرد و در انتقال پروژه از کامپیوتر محلی به سرور و بلعکس، انتقال می یابد. پوشه‌ی محیط کار یا پروژه، تنها یک نسخه از پروژه است. فایل های درون این پوشه از پایگاه داده‌ی git (واقع در پوشه git.) استخراج و از حالت فشرده خارج شده و در پوشه محیط کار یا محل پروژه قرار می گیرند تا شما بتوانید آن‌ها را تغییر داده یا ویرایش نمایید. بخش stage یا صحنه، تنها یک فایل ساده است که در داخل پوشه git قرار گرفته است. این فایل حاوی اطلاعات مربوط به فایل هایی است که باید در Commit بعدی، در پوشه git ذخیره شوند.

روند انجام کار در git به صورت زیر است:

  1. شما فایل های موجود در پوشه پروژه را ویرایش می کنید.
  2. فایل های تغییر یافته یا افزوده/کاسته شده از پروژه را به stage اضافه می کنید.
  3. فایل های به روی stage رفته را Commit کرده و با اینکار یک تصویر از وضعیت پروژه و فایل های روی stage را به صورت دائمی در پوشه git خود، ذخیره می کنید.

پس اگر یک نسخه از یک فایل مشخص در پوشه‌ git است، آن فایل Commit شده نامیده می شود. اگر یک فایل ویرایش شده و یا به پروژه افزوده یا از آن حذف گردیده، و به stage نیز اضافه شده است، آن فایل staged یا “به روی صحنه رفته” نامیده می شود. و اما اگر آن فایل پس از ویرایش به stage اضافه نشده باشد، در Commit بعدی شرکت داده نشده و Modified یا “ویرایش شده” نامیده می شود.

در آخر اومدم نرم افزارش رو نصب کنم با ورژن سیستم عامل من نمی خورد و نصب نشد، امیدوارم به زودی بتونم اون هم نصب کنم ببینم چی هست و باهاش کار کنم، شما خودتون هم می تونید بیشتر تحقیق کنید.

پی نوشت: کاوا اطلاعات خوبی در رابطه با این موضوع ارائه کرده بود.

 

این مطلب را با دیگران به اشتراک بزار

درباره ابوالفضل فتاحی

این روزها خیلی به این موضوع فکر می‌کنم که واقعا فلسفه‌ی وجود من چیه در این دنیا، اصلا دوست ندارم سرم و بندازم پایین و دنیا برام تصمیم بگیره که چی بشم، اصلا این فکر که اختیار زندگیم دست خودم نیست واقعا آزاردهنده است برام، هیچ وقت زمانم رو به کسی نفروختم که در ازاش مبلغی برای زنده موندن و خوشحال بودنم بهم بده، البته خیلی به دوستانم هدیه میدم، احساس می‌کنم باید دوستان فوق‌العاده‌ای را انتخاب کنم، باهاشون تعامل کنم و زمانم رو بهشون هدیه بدم، تا بتونیم با سینرژی که ایجاد میشه، کارهای تاثیر گذاری انجام بدیم و در این دنیا منشاء اثر باشیم.

پاسخ دادن

پست الکترونیک شما منتشر نخواهد شدفیلدهایی که ستاره دار هستند *

*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

کلیه حقوق این سایت تا سال ۱۹۸۶ محفوظ بوده و از اون سال به بعد کسی بابت حفاظت از این سایت پولی بهم نداد، بنابراین چیزی هم دیگه محفوظ نیست :)