من اخیراً طول کشید تا اصول گیت را به چندین کارمندم که تازه در حال یادگیری برنامه نویسی هستند و سعی در کار دارند ، آموزش دهم. با جستجوی مقالاتی برای مبتدیان در اینترنت ، به این واقعیت برخوردم که بیشتر آنها در مورد نحوه استفاده از کنسول Git یا ضرورت و برتری آن نسبت به دیگران است. سیستم های مشابه... مبتدی معمولاً در همه این موارد مهارت ندارد. من معتقدم که او برای شروع نیازی به دانستن همه اینها ندارد. به هر حال ، شما می توانید از Git برای پروژه های خود استفاده کنید و به موازات یادگیری برنامه نویسی ، همه لذت های آن را یاد بگیرید. ولی،من اکیداً توصیه می کنم که این مقاله را به عنوان یک مقاله مقدماتی در نظر بگیرید و در آینده درباره Git بیشتر بدانید..

درباره نحوه کار این ابزار کنترل نسخه کنجکاو هستید؟ اگر در حال توسعه هستید و تغییری در پروژه خود ثبت نمی کنید ، عملاً گم شده اید. اگر تغییری در تولید ایجاد کنید و مقداری خطا بدهید ، چه می کنید؟

اما چگونه Geet ترتیب انجام کار را می داند؟ تمایل هر منبع به بیش از یک تعهد است ، تمام تغییرات هر منبع باید در انتها "جمع" شود تا بخشی از پروژه باشد. برای حل این دو مشکل ، Geet با مفهوم شاخه ها کار می کند. بنابراین ، می توانید چندین شاخه داشته باشید و به عنوان مثال در هر یک از آنها بر روی یک تابع کار کنید یا کد را اصلاح کنید. اما اگر خطوط یکسانی در هر دو شاخه تغییر کند چه اتفاقی می افتد؟ ساده ، درگیری وجود دارد. اما معمولاً این مشکلی نیست که حل آن خیلی دشوار باشد و ما در پست بعدی در اینجا در وبلاگ بهتر به آن خواهیم پرداخت.

به طور کلی ، در زیر مقاله برش ، نحوه استفادهSmartGit و BitBucket شما می توانید زندگی خود را به عنوان یک توسعه دهنده تازه کار بهبود بخشید.

م یک برنامه کوچک از آنچه که ما انجام خواهیم داد:

  1. ایجاد مخزن در Bitbucket.
  2. شبیه سازی مخزن (افزودن آن به SmartGit).
  3. متعهد ساختن
  4. لغو تغییرات
  5. ایجاد شاخه.
  6. شاخه ها را هل دادن مخزن از راه دور (بارگذاری شاخه ها در یک سرور از راه دور).
  7. ادغام شاخه ها.

برو ایجاد مخزن یک کار بسیار ساده است. ما برای اینکار از BitBucket استفاده خواهیم کرد ، بنابراین شما باید در آنجا حساب کاربری داشته باشید. پس از ثبت نام ، دکمه "ایجاد" را فشار داده و قسمتهای مورد نیاز را پر کنید. بیایید مخزن را با استفاده از SmartGit کلون کنیم. بیایید از مخزن خود پیوندی بگیریم.

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

روش ضبط به شرح زیر است. خواهید دید که محتوای اصلی اولین تعهد بازیابی شده است. با استفاده از این دستور ، یک صفحه نمایش داده می شود که تفاوت ها را نشان می دهد همانطور که در ورودی بالا نشان داده شده است. برای این منظور ما باید دو شاخه را ادغام کنیم. توجه داشته باشید که تعهد "تعهد سوم" بالاتر از "تعهد چهارم" ظاهر می شود.

اکنون SmartGit را راه اندازی کنید ، "Project" - "Clone" (یا Ctrl + Alt + O) را انتخاب کنید و قسمتهای مورد نیاز را پر کنید:

سیستم از شما درخواست ورود و رمز عبور Bitbucket شما را می کند:


در پنجره بعدی ، دو گزینه شبیه سازی "شامل زیر مدولها" و "واکشی همه سرها و برچسب ها" وجود دارد. Git اجازه می دهد ماژول های برنامه جداگانه در مخازن مختلف ذخیره شوند. اگر گزینه Include Submodules را علامت بزنید ، SmartGit به طور خودکار همه ماژول ها را بارگیری می کند. اگر گزینه "Fetch all Heads and Tags" را علامت بزنید ، SmartGit پس از ایجاد پوشه پروژه ، همه شاخه ها و برچسب های این مخزن را بارگیری می کند:

خلاصه دستورات عملی

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

شما از حوزه فناوری قبلاً در یک پروژه توسعه تیم شرکت کرده اید و می دانید که تبادل دائمی پرونده بین تیم چقدر دشوار است. پست الکترونیک، cloud upload ، pen ، برای تبادل و تبادل کد استفاده می شوند. سیستم کنترل نسخه سیستمی است که تغییرات ایجاد شده در یک گروه از پرونده ها را ثبت می کند و عملکرد اصلی آن مدیریت پروژه و ایجاد نسخه های مختلف آن است. این ارائه می دهد ساده تر و روش موثر برای اینکه تیم توسعه همان کد پایه را بدون درگیری اصلاح کند.

پنجره بعدی نام پروژه در SmartGit است:

اگر یک مخزن خالی را شبیه سازی کنید (مانند این مقاله) ، پنجره زیر را مشاهده خواهید کرد:

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

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

اولین نوع این سیستم ها برای ظهور سیستم های کنترل نسخه متمرکز بوده و به شرح زیر عمل می کنند: آنها دارای یک سرور مبتنی بر معماری کلاینت سرور هستند که در آن سرور ، مخزن نیز نامیده می شود ، حاوی تمام پرونده های پروژه است. بنابراین ، توسعه دهندگان باید نسخه ای را که می خواهند پس از اتمام به دسک تاپ محلی خود تغییر دهند بارگیری و آن را در سرور بارگذاری کنند. با استفاده از این سیستم ، مدیریت پروژه آسان بود زیرا تیم می داند که هرکدام در حال اصلاح و حفظ تاریخچه نسخه پروژه هستند.

اکنون می توانید تغییرات پروژه ما را در SmartGit مشاهده کنید:

هر دو پرونده را انتخاب کنید و ابتدا "مرحله" و سپس "تعهد" را کلیک کنید. چرا باید Stage را فشار دهم؟ دکمه Stage پرونده های انتخاب شده را به فهرست فعلی اضافه می کند. اگر می خواهید برای دو پرونده یک تعهد ایجاد کنید ، اما تغییر کرده است ، بگویید 5 ، فقط این دو پرونده را انتخاب کنید ، "مرحله" را فشار دهید ، که آنها را به فهرست اضافه می کند ، و پس از "تعهد". به این ترتیب ، فقط دو پرونده انتخاب شده به تعهد وارد می شوند.

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

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

پس از آن ، یک پنجره ظاهر می شود که در آن شما باید نظر مربوط به تعهد را وارد کنید. معمولاً آنها آنچه را تغییر داده ، افزوده ، حذف و غیره شده در آنجا می نویسند:

سپس باید دکمه "تعهد" را فشار دهید. دکمه "تعهد و فشار" نیز همین کار را انجام می دهد ، اما همچنین تغییرات را در مخزن از راه دور هل می دهد (فشار می دهد) (در مورد ما ، این Bitbucket است). هنوز این کار را نکن ما با فشار بیشتر مقابله خواهیم کرد. در زیر ، در لیست شاخه ها ، شعبه محلی "master" ظاهر می شود. این شاخه اصلی کد برنامه است. کمی بعد می گویم شاخه ها چیست. حالا بیایید با پروژه خود کاری انجام دهیم و سپس تغییرات را دوباره برگردانیم. من فایل readme.txt را حذف می کنم ، پرونده index.php را ویرایش می کنم و یک فایل جدید confic.cfg اضافه می کنم:

این به شما کمک می کند تا مدیریت کنید نسخه های مختلف پروژه های شما خدمات کنترل نسخه کد. این مقاله برای شرکتها و تیمهایی در نظر گرفته شده است که هنوز ابزار کنترل نسخه خود را انتخاب نکرده اند و یا قصد تغییر آن را دارند. معیارهای مختلفی برای انتخاب ابزار کنترل نسخه وجود دارد.

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

حالا بیایید پس از تعهد ، تغییر را برگردانیم. بیایید وارد Log شوید:

تعهدی را که می خواهیم به آن بازگردیم انتخاب کنید و "بازنشانی" را فشار دهید:

در پنجره بعدی به ما پیشنهاد می شود که "Reset" را انتخاب کنیم.

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

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

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

برای وضوح ، یک تنظیم مجدد سخت انجام دادم:

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

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

این دستورات غالباً دستورات "لوله کشی" و ساده ترین دستورات برای استفاده ، دستورات "پرسلن" نامیده می شوند. حتی این دستورات از قابلیت استفاده ضعیف رنج می برند. برخی از آنها در مقایسه با مفاهیم کنترل نسخه کلاسیک مطابق انتظار عمل نمی کنند. با این حال ، مخزن ایجاد شده مستقیماً استفاده نمی شود زیرا فاقد پوشه کاری مربوطه است. همچنین ، درک اسناد و مدارک شما دشوارتر است. یک دستور نادرست که توسط یک توسعه دهنده شلخته یا آموزش دیده اجرا می شود ، می تواند به راحتی منجر به شرایط بسیار دشواری شود که از بین می روند.

بیایید سعی کنیم شاخه خودمان را ایجاد کنیم. ما در حال حاضر یکی داریم ، این استاد است. هنگام انجام اولین تعهد ، به طور خودکار ایجاد می شود (در صورت عدم وجود). بیایید شاخه دیگری ایجاد کنیم و نام آن را "new_future1" بگذاریم. F7 را فشار دهید یا در قسمت پایین شاخه های موجود در کتیبه Local Branches کلیک راست کرده و Add Add شاخه را در لیست کشویی انتخاب کنید:

روی "افزودن شاخه و سوئیچ" کلیک کنید تا بلافاصله به شاخه ایجاد شده بروید. اکنون می توانید تعهدات جدید ایجاد کنید ، پرونده ها را اصلاح کنید و نگران نباشید. از آنجا که شما همیشه یک شعبه اصلی دارید که به آن برگردید. هنگام تغییر شعبه ، Git تغییر می کند پرونده های محلی روی کسانی که در این تاپیک هستند یعنی اگر شاخه جدیدی ایجاد کردید ، چیزی را در پرونده index.php تغییر دهید و سپس به شاخه اصلی بروید ، تمام تغییراتی که ایجاد کرده اید حذف می شوند. اگر دوباره به شاخه ایجاد شده برگردید ، تغییرات برمی گردند.

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

یادگیری و استفاده از Git کاملاً دشوار است. آفت تعارض منافع خصوصاً در مورد توسعه دهندگان آموزش ندیده معمول است. مهمترین معیار هنگام انتخاب ابزار کنترل نسخه سادگی است ، زیرا سایر معیارها بی ربط یا معادل هستند. ابزار ساده این است که کنترل نسخه را سریع و شفاف می کند.

تاکنون ما به صورت محلی کار کرده ایم. بیایید سعی کنیم کار کار خود را در سرور بارگذاری کنیم. بیایید در شاخه new_future1 تعهد ایجاد کنیم. اگر مخزن خالی است ، اما خالی است ، از آنجا که ما مدتی قبل آن را ایجاد کردیم و چیزی را در سرور بارگذاری نکردیم ، Bitbucket شاخه اصلی را که ابتدا بارگذاری شد اختصاص می دهد. بنابراین بیایید به شاخه "master" برویم و دکمه "Push" را کلیک کنیم:

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

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

در مرحله بعدی ، SmartGit از شما می پرسد که آیا می توانید پیگیری پیکربندی را پیکربندی کنید. ردیابی به شما امکان می دهد شاخه های مرتبط را هنگام بارگیری یا بارگذاری به روزرسانی کد ، به طور خودکار به روز کنید. بنابراین ، روی "پیکربندی" کلیک کنید:

حالا به شاخه دیگری بروید و همین کار را انجام دهید. به Bitbucket بروید و ببینید چه چیزی در بخش Commits تغییر کرده است:

از آنجا که همه این مشکلات بوجود آمده است ، خوب است جایی وجود داشته باشد که هرکسی بتواند کد منبع خود را توسعه دهد و برآوردی در آن جا انجام شود: کدام یک برای پروژه بهتر است؟ به منظور حل این مشکلات و سایر مشکلات ذکر شده در بالا در جهان توسعه ، سیستم های کنترل نسخه ظاهر شدند ، ما در اینجا رویکرد کوچکی خواهیم داشت.

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

همانطور که می بینید ، همه چیز در یک سرور از راه دور به پایان رسید.

حالا بیایید شاخه ها را ادغام کنیم. چرا این مورد نیاز است؟ بیایید همین مثال را با یک ماژول بگیریم. دیر یا زود ، آن را اضافه می کنید و باید کد ماژول را به کد اصلی برنامه اضافه کنید. شما فقط باید شاخه ها را ادغام کنید. برای این کار ، به شاخه ای بروید که می خواهید کد را در آن ادغام کنید. در مورد ما ، این استاد است. سپس بر روی شاخه ای که می خواهید کد را از آن ادغام کنید کلیک راست کرده و "Merge" را انتخاب کنید:

سیستم کنترل نسخه محلی

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

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

اکنون تنها چیزی که باقی مانده است این است که تغییرات را به شاخه اصلی به سمت سرور فشار دهید. ما تغییر را به همان روشی که قبلاً در سرور بارگذاری کردیم ، دریافت می کنیم:

این تمام این مدت است. به دلیل تصاویر ، مقاله بزرگ منتشر شد. پاسخ های خود را بپرسید ارسال سوالات.

همه شما سیستم Git را می شناسید. حداقل شما شنیده اید - این مطمئناً است. توسعه دهندگانی که از این سیستم استفاده می کنند یا آن را دوست دارند یا آن را به دلیل رابط پیچیده و اشکالاتش سرزنش می کنند. سیستم کنترل نسخه Git استاندارد صنعت است. توسعه دهنده ممکن است در مورد مزایای Mercurial نظراتی داشته باشد ، اما بیشتر اوقات ، شما مجبور هستید که برای آشنایی با Git شرایط را تحمل کنید. مانند هر سیستم پیچیده ای ، بسیاری از عملکردهای مفید و ضروری را دارد. با این حال ، همه به سادگی درخشان نمی رسند ، بنابراین اجرای موجود جای پیشرفت دارد.

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

با کلمات ساده - استفاده از نرم افزار روی حیله و تزویر دشوار بود. بنابراین ، در آزمایشگاه م Instituteسسه فناوری ماساچوست ، آنها بهبود بخشیدند و تمام "عناصر مسئله" را قطع کردند (به هر حال ، چه مشکلی برای دیگری وجود دارد ، برای دیگری به راحتی می تواند یک مزیت باشد). نسخه بهبود یافته و ساده شده Gitless نامیده می شود. با 2،400 سوال مربوط به Git گرفته شده از سایت توسعه دهنده StackOverflow ساخته شده است.

گیت چه مشکلی دارد

بسیاری از کاربران شکایت کرده اند که Git به رابط کاربری جدیدی نیاز دارد. آنها حتی سندی را به نام What's اشتباه با Git کنار هم قرار داده اند؟ تحلیل طراحی مفهومی. نویسندگان: S. Perez De Rosso و D. Jackson.

مثال

گیت تسویه حساب< file > // تمام تغییرات موجود در یک فایل از آخرین بارگذاری در سیستم git reset را کنار بگذارید - سخت // تمام تغییرات موجود در همه پرونده ها از آخرین بارگذاری در سیستم را حذف کنید
این دو خط نشانگر چقدر نیاز Git به یک رابط بهبودیافته است. دو دستور مختلف برای یک عملکرد با یک تفاوت که یکی برای یک فایل است و دیگری مربوط به چندین پرونده است. بخشی از مشکل نیز این است که این دو دستور در واقع دقیقاً همان کار را انجام نمی دهند.

اکثر کاربران Git از آن برای تعداد کمی از دستورات استفاده می کنند ، در حالی که تعداد معدودی از کاربران پلت فرم را در سطح عمیق تری می دانند. به نظر می رسد که اساساً سیستم عامل برای عملکردهای اساسی مورد نیاز است ، و یک لایه بزرگ از امکانات برای یک دایره بسیار باریک باقی مانده است. این نشان می دهد که Git به درستی کار نمی کند.

مقایسه مختصر توابع اساسی با نسخه قبلی

یکی از ویژگی های بارز Gitless این است که ویژگی ای به نام staging را نادیده می گیرد. به شما امکان می دهد قسمتهای جداگانه ای از پرونده را ذخیره کنید. راحت است ، اما می تواند موقعیت های مشکل ساز ایجاد کند. تفاوت کلیدی بین این و عملکرد انباشت این است که دومین پنهان کردن تغییرات از مرحله.

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

تابع staging تغییرات ایجاد شده در پرونده را نمایه می کند. اگر پرونده ها را به صورت مرحله ای علامت گذاری کرده اید ، Git می داند که آنها را برای بارگذاری آماده کرده اید.

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

نویسنده کتابچه راهنمای Gitless گزارش می دهد که این مشکل هنگام جابجایی بین شاخه ها ظاهر می شود. به خاطر سپردن اینکه کدام یک از مراحل رابط کاربری است دشوار است. خوب ، مهمترین این موارد این بود که عملکرد در مورد ادغام ، که شامل پرونده های متناقض است ، به شما کمک نمی کند. این نظر پرز د روسو است.

Gitless این مشکل را حل می کند. شاخه ها نسبت به یکدیگر کاملاً خودمختار شده اند. این کار کار را بسیار ساده تر می کند و به توسعه دهندگان اجازه می دهد تا از سردرگمی تغییر دائمی بین کارها جلوگیری کنند.

ذخیره سازی تغییرات

Gitless ناحیه صحنه را به طور کلی پنهان می کند ، و این روند را برای کاربر شفاف تر و کمتر پیچیده می کند. دستورات "متعهد" بسیار انعطاف پذیرتری برای حل مشکلات وجود دارد. علاوه بر این ، آنها به شما این امکان را می دهند که اقداماتی مانند اختصاص بخش کد برای یک تعهد را انجام دهید.


علاوه بر این ، می توانید طبقه بندی هر پرونده را به مقادیر تغییر دهید: ردیابی شده ، ردیابی نشده یا نادیده گرفته شود. فرقی نمی کند این پرونده در هدر وجود داشته باشد یا خیر.


انشعاب از فرایندهای توسعه

اساسی ، لازم برای درک نسخه جدید، ایده: شعبات در Gitless به خطوط توسعه کاملاً مستقلی تبدیل شده اند. هر یک از آنها با نسخه کارگر پرونده خود ، جدا از دیگران است. هیچ همپوشانی و مشکلی وجود ندارد. در هر نقطه ای که به شعبه دیگری بروید ، محتوای فضای کاری شما حفظ می شود و پرونده های مربوط به شاخه مقصد بازیابی می شوند. طبقه بندی پرونده نیز حفظ می شود. اگر پرونده ای به طور متفاوت در دو شاخه جداگانه طبقه بندی شود ، Gitless آن را در نظر می گیرد.


به زبان ساده ، در نسخه Gitless نیازی نیست که مراقب تغییرات بارگیری شده ای باشید که با تغییرات شاخه مقصد در تعارض است.


اگر ادغام یا فیوز میانی دارید می توانید حل و فصل وضعیت درگیری را به تعویق بیندازید. درگیری تا زمانی که شما به عقب برگردید باقی خواهد ماند.


کار با مخازن از راه دور

همگام سازی با مخازن دیگر در هر دو برنامه یکسان است.


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

می توانید راهنمایی برای کار با Gitless در وب سایت رسمی برنامه پیدا کنید. این مستندات موارد زیر را توصیف می کند: نحوه ایجاد مخزن ، ذخیره تغییرات. نحوه کار با شاخه ها ؛ نحوه استفاده از برچسب ها ، کار با مخازن از راه دور.

نتیجه چیست

نتیجه یک برنامه کاربردی است که قابلیت Git را حفظ می کند ، اما در عین حال یادگیری و استفاده توسط تیم های توسعه دهنده آسان تر است. در حقیقت ، قبل از Gitless تلاش هایی برای بهبود Git صورت گرفته است. اما طبق گفته فیلیپ گوو (وی استادیار علوم شناختی در UC San Diego است) ، این نسخه برای اولین بار به اهداف تبدیل رابط و در واقع حل مشکلات اصلی دست یافت.
این پروژه از روشهای دقیق برای ایجاد نرم افزار استفاده کرد. این امر برای جداسازی کاستی ها در یکی از پرکاربردترین پروژه های نرم افزاری در جهان ضروری است. در گذشته ، بسیاری از کاربران استدلال های مضحکی را علیه و مخالف Git ارائه داده اند ، اما هیچ یک مبتنی بر یک رویکرد علمی نبوده اند.

با Gitless ، مشخص می شود که رویکرد ساده سازی می تواند در سایر سیستم های پیچیده نیز اعمال شود. به عنوان مثال ، Google Inbox و Dropbox.