info@academyit.net 02144085471
  1. صفحه نخست
  2. مقالات
  3. گیت چیست ؟

Git چیست؟

گیت چیست؟

 

یک بخش بسیار مهم برای جذب، زیرا اگر شما چیستی مبانی کار با آن را یاد بگیرید استفاده از آن بسیار برای شما آسانتر خواهد بود. در حینی که شما کار با گیت را یاد میگیرید سعی کنید ذهن خود را از چیزهایی که از سایر VCSها مثل CVS، Subversion، Perforce می­دانید پاک کنید زیرا این کار به شما در جلوگیری از سردرگمی نامحسوسی که ممکن است در حین کار با ابزار برای شما پیش بیاید جلوگیری کند. اگرچه رابط کاربری (user interface) تقریبا شبیه به سایر VCSهاست اما به نحوی بسیار متفاوت اطلاعات را ذخیره کرده و آن­ها را تجزیه و تحلیل می­کند (درباره آن­ها فکر می­کند) و دانستن این تفاوت­ها از سردرگمی شما حین استفاده از آن جلوگیری می­کند.
 

Snapshots, not differences


تفاوت اصلی بین گیت و سایر VCSها (subversion و سایر VSCهای مشابه) نحوه­ی فکر کردن گیت به داده­هاست (نحوه­ی تجزیه و تحلیل داده­ها).به بیان روشن­تر، بیشتر سیستم­ها اطلاعات را تحت عنوان یک لیست از تغییرات مبتنی بر فایل ( a list of file-based changes) ذخیره می­کند. سیستم­های دیگر (CVS, Subversion, Perforce, Bazzar,…) اطلاعات ذخیره شده خود را به عنوان مجموعه­ای از داده­ها و تغییرات هرفایل با گذر زمان تجزیه و تحلیل می­کند ( که به این روش معمولا به عنوان کنترل ورژن پایه دلتا توصیف می­شود (delta-based version control)).

 

 


گیت داده­ ها را به این روش تجزیه تحلیل و ذخیره نمی­کند. گیت داده­ها را بیشتر شبیه به یک سری از عکس­های فوری از یک فایل­سیستم مینیاتوری (snapshots of a miniature filesystem) تجزیه و تحلیل می­کند. هربار از گیت استفاده می­کنید یا وضعیت پروژه خود را ذخیره می­کنید، گیت اساسا یک عکس از تمامی آنچه فایل­های شما به نظر می­رسد در لحظه عکس گرفته و مرجع آن عکس را فورا ذخیره می­کند. برای کارآمدی بیشتر اگر فایل­ها تغییر نکنند، گیت فایل­ها را مجددا ذخیره نمی­کند و فقط یک لینک به پرونده مشابه که قبلا ذخیره شده ایجاد می­کند. گیت داده­ها را بیشتر شبیه به جریان عکس­های فوری (stream of snapshots) تجزیه و تحلیل می­کند.

این یک تمایز اصلی بین گیت و تقریبا همه­ی سایر VCSهاست. این باعث می­شود گیت تقریبا در تمامی جنبه­ های کنترل نسخه که بیشتر سایر سیستم­ها از نسل قبلی کپی شده ­اند تجدید نظر کند (مثل آن­ها نیست). این تمایز گیت را بیشتر شبیه به یک مینی فایل سیستم با یک سری ابزار بسیار قوی که در بالای آن ساخته شده ­اند می­کند تا یک VCS ساده. ما چندین مزیت تجزیه و تحلیل داده ­ها به این روش را زمانی توضیح در Git branching   بیان و بررسی خواهیم کرد.

 

تقریبا تمامی عملیات­ها محلی است

 

بیشتر عملیات­ ها در گیت برای عمل کردن تنها نیاز به یک فایل­ های محلی و منابع دارد. به­طورکلی در شبکه شما به هیچ اطلاعاتی از یک سیستم دیگر نیاز نیست. اگر شما به کار با CVS عادت دارید که در آن معمولا با تاخیر در شبکه مواجه است، این جنبه گیت باعث می­شود که شما فکر کنید که خدای سرعت آن را با قدرت های ماورایی برکت داده است. زیرا شما تمامی و تاریخچه­ ی پروژه را درست در حافظه­ ی محلی خود دارید و اینگونه تقریبا تمامی عملیات­ها فوری و بسیار سریع به نظر می­رسند.


به ­طور مثال، برای جست­ و جوی تاریخچه­ ی پروژه، گیت نیازی به خارج شدن از سرور برای دستیابی به تاریخچه و نشان دادن آن ندارد و به سادگی آن را مستقیما از دیتابیس (database) محلی شما می­خواند. این بدین معنی است که شما تاریخچه­ ی پروژه را فورا خواهید دید. اگر شما بخواهید تغییرات رخ داده بین یک نسخه از یک فایل و نسخه­ی یک ماه پیش آن را مشاهده کنید، گیت به جای اینکه از یک سروری خارجی (remote server) تقاضای انجام این کار را بکند و یا برای انجام محلی آن درخواست نسخه­ی قدیمی فایل را از یک سرور خارجی بکند، فایل یک ماه پیش را جست و جو کرده و محاسبات تغییرات محلی را انجام می­دهد.


این امر تقریبا به این معنی است که کارهای بسیار کمی وجود دارد که شما در حالت offline و یا off vpn نتوانید انجام دهید. مثلا زمانی که شما در یک هواپیما و یا قطار هستید و قصد می­کنید کمی کار کنید به راحتی می­توانید این کار را انجام دهید (به کپی محلی خودتان) تا زمانی که برای آپلود آن یک شبکه پیدا کنید. اگر به خانه رفته­ اید و VPN شما به درستی کار نمی­کند، همچنان می­توانید به کار کردن ادامه دهید. در بسیاری سیستم­های دیگر انجام چنین کارهایی تقریبا ناممکن و دشوار است. مثلا در شرایط کاری بحرانی در صورت عدم اتصال به یک سرور کارهای چندانی نمی­توانید انجام دهید؛ در Subversion و CVS امکان ویرایش فایل وجود دارد اما امکان اعمال تغییرات در دیتابیس (به دلیل آفلاین بودن) وجود ندارد. این شاید یک ویژگی خیلی چشمگیر به نظر نرسد اما قطعا از تفاوتی که ایجاد می­کند شگفت زده خواهید شد.

 

گیت یکپارچگی (تمامیت) دارد

 

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

مکانیزیمی که گیت از آن برای این بررسی استفاده می­کند SHA-1 hash نام دارد. یک رشته 40 کارکتری که از کارکترهای 6تایی (6ضلعی) تشکیل شده (0-9 و a-f) و براساس محتوای فایل و یا ساختار فهرست راهنما (directory) محاسبه می­شود. یک SHA-1 hash چیزی شبیه به این است:

 

24b9da6552252987aa493b52f8696cd6d3b00373

شما این مقدارهای hash را در سرتاسر گیت مشاهده می­کنید زیرا از آن­ها بسیار استفاده می­کند. در واقع، گیت همه ­چیز را در دیتابیس خود نه توسط نام فایل بلکه براساس مقدار hash محتوای آن ذخیره میکند.

 

گیت معمولا فقط داده اضافه می­کند
 

زمانی که شما در گیت کارهایی را انجام می­دهید، تقریبا همه­ ی آن­ها تنها داده­ ها را به دیتابیس گیت اضافه می­کنند. استفاده از سیستم (انتظار از سیستم) برای انجام کارهای غیرقابل انجام و یا مجبور کردن آن به پاک کردن داده­ ها از هر طریقی امری بسیار دشوار است. اگرچه در هر VCS امکان از دست دادن ویا اشتباه گرفتن تغییراتی که هنوز انجام نداده­ اید وجود دارد، اما بعد از انجام یک اسنپ­ شات در گیت، امکان از دست دادن تغییرات خصوصا اگر مرتبا دیتابیس خود را به مخزن (مرجع (repository)) دیگر وارد (push) می­کنید بسیار کم است.

این امر استفاده از گیت را ساده ­تر می­کند زیرا ما می­دانیم که می­توانیم بدون سردرگمی در مسائل آزمایش کنیم. برای نگاه عمقی بیشتر به نحوه­ ی ذخیره داده­ گیت و متد کار شما برای بازیابی داده­ هایی که گم شده به نظر می­رسند، undoing things را مشاهده کنید.

 

 

سه حالت گیت
 

توجه کنید این اصلی ترین چیزی است که باید درمورد گیت به یاد داشته باشید اگر می­خواهید ادامه ­ی فرآیند آموزش شما به خوبی و بدون مشکل پیش برود. گیت سه حالت اصلی دارد که فایل های شما می­توانند در آن­ها مستقر شوند: اصلاح شده (modified)، مرحله­ بندی شده (staged)، انجام شده (وارد شده) (Committed)
 
 

  • Modified:  به این معنی است که شما فایل را تغییر دادهاید  اما هنوز آن را به دیتابیس خود وارد نکرده ­اید
  • Staged:به این معنی است که شما یک فایل اصلاح شده در نسخه فعلی خود را مشخص کرده تا به اسنپ­ شات بعدی شما تبدیل شود.
  • Committed:  یعنی که داده­ ی شما در دیتابیس محلی شما ذخیره شده.
     

درخت کاری یک وارسی (checkout) واحد از یک نسخه یک پروژه است. این فایل­ها دیتابیس فشرده در دایرکتوری گیت خارج شده و برای استفاده و یا اصلاح بر روی حافظه (دیسک) قرار می­گیرد.
محیط Staging یک فایل است که معمولا در گیت دایرکتوری شما موجود بوده و اطلاعاتی را در مورد اینکه چه چیزی در انجام بعدی (عمل بعدی) (next commit) قرار خواهد گرفت را ذخیره خواهد کرد. نام تکنیکال آن در بیان گیت (Git parlance) index است))، اما عبارت محیط Staging نیز گویای آن است.
دایرکتوری گیت جایی است که گیت متادیتاها (metadata) و دیتابیس اشیا (object database) را برای پروژه شما ذخیره می­کند. این مهم­ترین قسمت گیت است و چیزی است که هنگام مشترک­سازی (clone) یک
مخزن (مرجع) (repository) از یک کامپیوتر دیگر کپی می­شود.
گردش کاری اصلی گیت چیزی شبیه به زیر است:

1.     شما فایل­ها را در درخت کاری خود اصلاح می­کنید
2.     شما به­ طور انتخابی آن تغییراتی را که می­خواهید قسمتی از عمل بعدی شما باشد را مرحله­ بندی کرده و تنها آن تغییرات را به محیط  staging اضافه می­کند.
3.     شما یک عمل انجام می­دهید (Commit) که فایل­هارا آنگونه که در محیط staging هستند گرفته و آن اسنپ­ شات را در دایرکتوری گیت شما برای همیشه ذخیره می کند.

اگر نسخه خاصی از یک فایل در دایکتوری گیت (فهرست گیت) قرار دارد، اینگونه تصور می­شود که انجام شده (عمل (مرحله سوم) بر روی آن انجام شده). اگر اصلاح شده و به محیط staging افزوده شده است مرحله دوم بر روی آن انجام شده و فایل مرحله ­بندی شده است و اگر از زمانی که بررسی شده تغییر کرده اما هنوز مرحله بندی (staged) نشده است، فایل در مرحله اول بوده و اصلاح شده است. در Git Basics شما بیشتر در مورد این اصطلاحات و نحوه­ ی بهره­ جویی از آن­ها و نیز نحوه­ ی حذف کلی مرحله­ ی stage فراخواهی آموخت.
 

 

امیدوارم مواردی که توی این مقاله مورد بررسی قرار دادیم تونسته باشه به شما دوست عزیزم کمک کنه که در طراحی وب سایت یک قدم جلوتر برید و کارهایی بهتر و حرفه ای تری رو انجام بدید و اما اگر شما دوست عزیز مشتاق یادگیری طراحی سایت هستید و در این رابطه نیاز به آموزش دارید میتونید با مطالبی که در صفحه آموزش طراحی سایت نوشتیم مسیر درستی رو انتخاب کنید، با استفاده از آموزش طراحی سایت حرفه ای آکادمی آی تی میتونید به صورت ویدئویی و کاملا کاربردی از صفر آموزش رو آغاز کنید.

 

ارسال نظر

= 4 + 2

هنوز نظری برای این مقاله ثبت نشده است ...