شبکه، سرور، کلاینت چیست؟ نحوه عملکرد شبکه های کامپیوتری.
شبکهها برای محاسبات مدرن حیاتی هستند، زیرا بدون شبکهها، همه چیز از هم میپاشد، دستگاههای امروزی برای ارتباط طراحی شده اند و تنها راهی که میتوانند با هم صحبت کنند این است که در یک شبکه قرار داشته باشند. در واقع، شبکه چندین دستگاه را به هم متصل میکند تا بتوانند ارتباط برقرار کنند. مثلاً اگر به تلفن من نگاه کنید، تلفن من یک دستگاه است. و یک دستگاه میتواند یک کامپیوتر، تبلت، تلفن، چاپگر یا حتی لامپهای من باشد که روی شبکه قرار دارند. در واقع، هر چیزی که قابلیت اتصال به شبکه را داشته باشد، یک دستگاه محسوب میشود. اما بیایید فقط به تلفن و کامپیوتر من فکر کنیم. اگر دستگاههای ما مانند ساختمانهایی مجزا باشند، جادههایی که این دستگاهها یا ساختمانها را به هم متصل میکنند، همان شبکه هستند. و ماشینها یا وسایل نقلیهای که در این جادهها رفتوآمد میکنند، همان دادههایی هستند که بین دستگاههای ما منتقل میشوند. پس شبکه اینگونه عمل میکند: دستگاهها را به هم متصل میکند. اما این توضیح کمی ساده است، زیرا در واقع دو نوع شبکه داریم:
۱. شبکه محلی (LAN یا Local Area Network): این یک شبکه محدود به یک منطقه کوچک است. میتوانید آن را به عنوان شبکهای در نظر بگیرید که در یک ساختمان واحد قرار دارد. مثلاً در خانه من یک شبکه وجود دارد، پس یک LAN دارم. شما هم الان یا اگر در یک ساختمان اداری احتمالاً یک LAN دارید.
۲. شبکه گسترده (WAN یا Wide Area Network): یک WAN، چندین LAN را به هم متصل میکند و بزرگترین WAN موجود، اینترنت است. در واقع، LAN خانه من به اینترنت متصل است و اگر LAN خانه شما هم به اینترنت وصل باشد، پس حدس بزنید چه اتفاقی میافتد؟ LANهای ما به هم متصل هستند و میتوانم به دستگاههای روی LAN شما دسترسی داشته باشم—البته اگر ابزارها و تجهیزات امنیتی برای محافظت از LANهای فردی وجود نداشته باشند.
یکی از این ابزارها فایروال نام دارد که هدف اصلی آن محافظت از LAN در برابر نفوذهای احتمالی از سمت WAN است. بنابراین، حتی اگر LAN من از طریق WAN (یعنی اینترنت) به LAN شما متصل باشد، به دلیل وجود فایروالها، نمیتوانیم به دستگاههای یکدیگر دسترسی داشته باشیم.
حال اگر هدف شبکه اتصال دستگاهها برای ارتباط باشد، پس بدیهی است که دستگاهها باید بتوانند یکدیگر را درک کنند. درست مانند زمانی که ما انسانها برای ارتباط از زبان استفاده میکنیم، دستگاههای روی شبکه از چیزی به نام پروتکل استفاده میکنند. رایجترین پروتکل در شبکه، پروتکل TCP/IP است که نحوه عملکرد آن بسیار هوشمندانه است.
فرض کنید شما روی تلفن خود هستید و تصمیم میگیرید به سایت yacobee.com بروید. آدرس را وارد و اینتر را میزنید. تلفن شما دادهها را به دستگاه میزبان (هاست) سایت yacobee.com ارسال میکند، اما نحوه ارسال آن جالب است: دادهها به بستههای کوچکی تقسیم میشوند که میتوانند از یک مسیر یا چندین مسیر مختلف عبور کنند. در نهایت، همه این بستهها به مقصد میرسند، دوباره مونتاژ میشوند و پردازش میگردند. در این مثال، سرور yacobee.com دادهها را به بستههای کوچک تقسیم میکند که سپس به دستگاه شما بازمیگردند، در آنجا دوباره سوار میشوند و پردازش میشوند.
پس شبکهها در واقع جادهها و بزرگراههای انتقال داده هستند که دنیای دیجیتال ما را به شکلی یکپارچه به کار میاندازند. اما البته، برای اینکه یک دستگاه بتواند داده را به دستگاه دیگری ارسال کند، باید بداند که آن دستگاه کجاست—یعنی باید آدرس آن را بداند.
سرور چیست؟
اگر شبکهها جادهها و بزرگراهها باشند، دستگاههایی به نام سرورها را میتوانیم انبارها یا ایستگاههای خدماتی روی این جادهها و بزرگراهها بنامیم. سرورها انواع مختلفی هستند مثل وب سرور، دیتابیس سرور یا DHCP. سرور دستگاهی است که نرمافزار تخصصی برای ارائه خدمات خاص دارد. برای مثال، رایجترین نوع سرور، وبسرور است. وقتی در مرورگر خود به آدرس yacobee.com میرویم، در واقع درخواستی به سروری ارسال میشود که مسئول مدیریت وبسایت yacobee.com است. آن کامپیوتر نرمافزاری دارد که مخصوصاً برای پاسخ به اتصالات مرورگر طراحی شده. هر بار که روی یکی از لینکهای سایت کلیک میکنیم، درخواستی به وبسرور ارسال میشود تا آن را پردازش کند و محتوای درخواستی را ارائه دهد. سرور پایگاه داده نوع دیگری از کامپیوتر است که نرمافزار تخصصی برای ارائه خدمات پایگاه داده به برنامهها و کاربران اجرا میکند تا آنها بتوانند به دادهها دسترسی داشته باشند و اطلاعات را به هر نحوی که نیاز دارند تغییر دهند. DHCP سرور متفاوت تنها هدف آن ارائه آدرسهای IP به دستگاههای موجود در شبکه است. این سه سرور مختلف، سه نوع خدمت کاملاً متفاوت ارائه میدهند، اما این حتی سطح ماجرا را هم نشان نمیدهد، زیرا انواع بسیار دیگری از سرورها نیز وجود دارند.
یکی از چیزهای واقعاً چشمگیر درباره سرورها این است که آنها میتوانند حجم زیادی از کار را مدیریت کنند. یک وبسرور را مانند یک کتابدار در نظر بگیرید. ما به کتابدار درخواست میدهیم، و او در پاسخ، محتوای مورد نظر ما را ارائه میدهد. البته در یک کتابخانه، افراد زیادی به میز کتابدار مراجعه میکنند تا اطلاعات بخواهند. در این حالت، یک تیم از کتابداران هر یک از این درخواستها را به صورت جداگانه مدیریت میکنند. این دقیقاً کاری است که یک سرور انجام میدهد. یک سرور میتواند چندین کاربر، صدها، هزاران، یا حتی صدها هزار کاربر را به طور همزمان مدیریت کند. به همین دلیل (البته نه فقط به این دلیل)، سرورها ستون فقرات هر شبکهای هستند. شاید در شبکه خانگی خود نیازی به سرور نداشته باشیم، اما قطعاً هر روز با سرورها تعامل داریم.
کلاینت چیست؟
در بزرگراه شبکهای جهان، اگر سرورها مانند ایستگاههای خدمات باشند، کلاینتها مسافرانی هستند که در این ایستگاهها توقف میکنند. کلاینت میتواند یک دستگاه یا نرمافزاری باشد که با سرور تعامل کرده و با آن کار میکند. این تمام ماجرا است. اما در بسیاری از موارد، کلاینت نرمافزار تخصصی برای کار با سرور یا سرویس خاص طراحی شده است. احتمالاً رایجترین کلاینت، مرورگر وب است. از مرورگر وب برای ارسال درخواست به یک وب سرور استفاده میکنیم. وب سرور درخواست را دریافت، پردازش و سپس پاسخ را به مرورگر بازمیگرداند. مرورگر نیز این پاسخ را نمایش میدهد تا بتوانیم با محتوای درخواستی کار کنیم. بنابراین، رابطه بین کلاینت و سرور وجود دارد که به آن ارتباط کلاینت-سرور میگویند. این یک الگوی رایج است که تقریباً در تمامی تعاملات کلاینت و سرور استفاده میشود.
برای مثال، کلاینت ایمیل را در نظر بگیرید. فرقی نمیکند که یک کلاینت مستقل مانند Microsoft Outlook باشد یا یک کلاینت مبتنی بر وب مانند Gmail. کلاینت ایمیل با سرور ایمیل تعامل میکند و ایمیلهای جدید را دریافت میکند تا ما بتوانیم آنها را بخوانیم. باز هم، این همان ارتباط کلاینت-سرور است.
جالب اینجاست که اغلب از کلاینتها بدون اینکه بدانیم در حال استفاده از آنها هستیم، زیرا اکثر برنامههای روی گوشیها یا تبلتهای ما کلاینت هستند. آنها با یک سرور یا در بسیاری از موارد با چندین سرور تعامل میکنند، اطلاعات را از آنها دریافت میکنند و درون برنامه نمایش میدهند. وقتی اتصال اینترنت وجود ندارد، به وضوح مشخص میشود که برنامه یک کلاینت است، چون نمیتواند وظیفه خود را انجام دهد و با سرویسی که قرار است تعامل کند، ارتباط برقرار نمیکند.
در گذشته، کلاینتها نرمافزارهای سادهای بودند که فقط اطلاعات را از سرور دریافت و نمایش میدادند و کار دیگری انجام نمیدادند. اما امروزه، کلاینتها پردازشهای زیادی را روی خود دستگاه انجام میدهند که به آن پردازش سمت کلاینت میگوییم. حتی یک مرورگر وب نیز باید تصاویر را پردازش و نمایش دهد، استایلهای CSS را اعمال کند یا انیمیشنها را اجرا کند.
کلاینتها برای تعامل با دنیای دیجیتال ضروری هستند. آنها در واقع رابطی هستند که برای کار با دادهها، دسترسی به آنها و تغییرشان از آن استفاده میکنیم. بنابراین، هر بار که از گوشی، تبلت یا کامپیوتر خود استفاده میکنید و کاری را به صورت آنلاین انجام میدهید، دستگاه یا نرمافزار شما در نقش یک کلاینت عمل میکند.
ارتباط بین مرورگر و سرور وب - HTTP
درباره مرورگرهای وب و سرورهای وب و ارتباط بین این دو صحبت کردهام، اما واقعاً درباره خودِ این ارتباط توضیح ندادهایم. چون واقعاً این ارتباط، نقطهی کلیدی است. بدون دانستن نحوهی عملکرد آن، هیچ چیز کار نمیکند. چون همه چیز به HTTP وابسته است. HTTP مخفف «پروتکل انتقال ابرمتن» (Hypertext Transfer Protocol) است و مجموعهای از قوانین است که مرورگرهای وب و سرورهای وب باید از آن پیروی کنند تا وب بتواند کار کند.
ما از مرورگر وب برای ارسال یک درخواست به سرور وب برای دریافت یک منبع خاص استفاده میکنیم. این منبع میتواند یک صفحه وب، یک تصویر، یک فایل CSS، یک فایل JavaScript یا حتی یک فایل متنی باشد. این درخواست طبق قوانین پروتکل HTTP قالببندی میشود. این درخواست شامل منبعی است که میخواهیم دریافت کنیم، اندازهی درخواست، و همچنین هر اطلاعاتی که ممکن است لازم باشد همراه با درخواست ارسال شود.
سپس سرور وب این درخواست را دریافت کرده و پردازش میکند، چون سرور نیز HTTP را میفهمد. سپس یک پاسخ به مرورگر ارسال میکند. اما انواع مختلفی از درخواستها وجود دارد که به آنها «متدهای HTTP» گفته میشود. رایجترین نوع درخواست، درخواست GET است. ما از آن برای دریافت اطلاعات استفاده میکنیم، و دقیقاً همین کاربرد را دارد: دریافت محتوا.
نوع دوم درخواست، POST است. در این نوع، ما اساساً به سرور اعلام میکنیم که میخواهیم یک منبع جدید ایجاد کنیم. البته برای اینکه سرور بتواند این کار را انجام دهد، باید تمام اطلاعات مورد نیاز برای ایجاد منبع جدید را فراهم کنیم. مثلاً در مورد یک پست وبلاگ، باید عنوان پست، محتوای پست، و نویسندهی آن را مشخص کنیم. احتمالاً اطلاعات دیگری هم لازم است، اما اینها موارد اصلی هستند.
سپس متدهای دیگری نیز وجود دارند: PUT و PATCH که هر دو برای بهروزرسانی یک منبع استفاده میشوند.
و در نهایت، درخواست DELETE وجود دارد. ما از این درخواست برای حذف یک منبع خاص استفاده میکنیم و سرور آن منبع را حذف میکند.
به خودی خود، پروتکل HTTP بسیار ناامن است زیرا تمام اطلاعات به صورت متن ساده (plain text) روی شبکه منتقل میشوند. هیچ گونه محافظتی در کار نیست و این مسئله زمانی که بخواهید با اطلاعات حساس یا امنیتی کار کنید مشکلساز میشود. اینجاست که HTTPS وارد عمل میشود. این پروتکل همچنان همان پروتکل انتقال HTTP (Hypertext Transfer Protocol) است، اما حرف "S" در آن به معنای "امن" (Secure) است. این پروتکل ارتباط بین مرورگر و سرور را رمزگذاری میکند، به طوری که تمام تبادلات بین این دو به طور کامل رمزنگاری میشوند.
در سالهای اخیر، تلاشهایی برای رمزگذاری همه چیز با HTTPS انجام شده است. متأسفانه، این کار به سادگی زدن یک کلید روی سرور و گفتن "این را رمزگذاری کن" نیست. فرآیند پیچیدهای درگیر است. شما باید یک گواهی (certificate) خریداری کنید یا حداقل آن را دریافت نمایید. این گواهی باید از یک مرجع صدور گواهی (Certificate Authority) صادر شود که سازمانی است مسئول ارائه این گواهیها. سپس باید گواهی را روی سرور نصب و آن را به سرور متصل (bind) کنید. مراحل دقیق این کار بستگی به نرمافزار سرور HTTP دارد. به طور خلاصه، HTTP و HTTPS ستون فقرات ارتباطات وب هستند. آنها اطمینان میدهند که درخواستهای ما به مقصد مورد نظر میرسند و به شکلی ایمن بازمیگردند. هر بار که از وب استفاده میکنید، بدون آن که حتی به آن فکر کنید، در حال استفاده از HTTP یا HTTPS هستید.
سوئیچ، روتر و فایروال
ما در مورد دستگاههای زیادی صحبت کردهایم، عمدتاً سرورها و کلاینتها. اما برخی دستگاههای دیگر نیز در شبکه وجود دارند که بسیار مهم هستند، زیرا بدون آنها، شبکه کار نمیکند.
اولین دستگاهی که درباره آن صحبت میکنیم، سوئیچ شبکه نام دارد یا به سادگی از اصطلاح «سوئیچ» استفاده میکنیم. این دستگاه، وسیلهای است که کامپیوترها و سایر دستگاههای ما به آن متصل میشوند. به عنوان مثال، کامپیوتر من با یک کابل شبکه به سوئیچ متصل است و این همان چیزی است که کامپیوتر من را به شبکه وصل میکند. شما میتوانید هر تعداد سوئیچ که بخواهید داشته باشید. البته در یک شبکه خانگی، معمولاً یک سوئیچ وجود دارد. اما در یک شبکه تجاری، میتوانید هر تعداد سوئیچ که نیاز دارید داشته باشید.
اما دستگاههای بیسیم چطور؟ چگونه دستگاههای بیسیم به شبکه متصل میشوند؟ آنها این کار را با استفاده از دستگاهی به نام «نقطه دسترسی بیسیم» انجام میدهند. این دستگاه در واقع یک سوئیچ برای دستگاههای بیسیم است. در حقیقت، نقطه دسترسی ۹۹٪ مواقع به یک سوئیچ متصل میشود. این اولین راهی است که نقطه دسترسی از طریق آن به شبکه وصل میشود.
سوئیچها دادهها را با استفاده از آدرسهای MAC به دستگاه صحیح هدایت میکنند. بنابراین، سوئیچ یک جدول مرجع یا جدول تطبیق دارد که در آن آدرس IP را با آدرس MAC مطابقت میدهد و سپس داده را به دستگاه صحیح ارسال میکند. پس وقتی صحبت از مدیریت ترافیک در یک شبکه محلی (LAN) میشود، این سوئیچها هستند که این کار را انجام میدهند.
اما وقتی صحبت از ارتباط با دستگاههای موجود در شبکههای دیگر میشود، دستگاه دیگری وارد عمل میشود که «روتر» نام دارد. روتر یک دستگاه هوشمند دیگر است که حداقل دو شبکه را به هم متصل میکند. معمولاً از روتر برای اتصال شبکه محلی (LAN) به اینترنت استفاده میکنیم. در اینجا، تمام مسیرها به یک تقاطع واحد میرسند که همان شبکههای دیگر هستند. و این روتر است که ترافیک را هدایت میکند. بنابراین، اگر بخواهم با دستگاهی در شبکه شما ارتباط برقرار کنم، دادههای من باید از روتر من عبور کنند و همچنین از چند روتر دیگر، زیرا این دادهها باید به درستی مسیریابی شوند تا به شبکه شما برسند.
البته این کار چندان ایمنی نیست. منظورم این است که من قصد آسیب رساندن به دستگاههای شما را ندارم، اما افراد زیادی هستند که این کار را میکنند. پس به نوعی امنیت برای شبکههای خود نیاز داریم، و اینجاست که «فایروال» وارد عمل میشود. فایروالها معمولاً بین روتر و اولین سوئیچ شبکه قرار میگیرند. اگرچه اخیراً دستگاههایی به نام «فایروالهای نسل بعدی» وجود دارند که هم قابلیت فایروال و هم مسیریابی را دارند.
اما فایروال در واقع یک دیوار اطراف شبکه شما میسازد. این یک محیط امنیتی است و کنترل میکند که چه دادههایی میتوانند از خارج وارد شبکه شما شوند. همچنین میتواند دادههایی را که از شبکه شما به اینترنت ارسال میشوند کنترل کند.
پهنای باند - bandwidth
پهنای باند شبکه شما بسیار مهم است، زیرا تعیین میکند چه مقدار داده میتواند در شبکه شما جریان یابد. ممکن است فکر کنید این همان سرعت شبکه است، اما اینطور نیست. در واقع، بسیاری از افراد پهنای باند و سرعت را با هم اشتباه میگیرند. این دو مرتبط هستند، اما دو مفهوم متفاوتند. پهنای باند حداکثر مقدار دادهای است که میتواند در شبکه شما انتقال یابد، در حالی که سرعت، میزان واقعی انتقال آن داده است که ممکن است به پهنای باند کامل شما نرسد. پهنای باند شبکه شما به سختافزاری که انتخاب میکنید بستگی دارد، مانند سوئیچها، روترها، فایروالها، نقاط دسترسی (access points) و حتی کابلهایی که استفاده میکنید.
میتوانید پهنای باند را مانند خطوط یک بزرگراه تصور کنید. یک بزرگراه تکبانده را در نظر بگیرید: ترافیک فقط در یک جهت حرکت میکند و ماشینها پشت سر هم قرار دارند، که چندان کارآمد نیست. اما با افزودن خطوط بیشتر، مثلاً یک بزرگراه دو بانده، ترافیک بیشتری قابل مدیریت است. بزرگراه سه بانده از دو بانده بهتر است، چهار بانده از سه بانده بهتر، و به همین ترتیب. این دقیقاً همان مفهوم پهنای باند است.
پهنای باند بسیار مهم است، زیرا در نهایت تعیین میکند چه مقدار داده میتوانید در شبکه خود انتقال دهید. این موضوع به ویژه زمانی حیاتی است که حجم زیادی از دادههای حجیم، مانند ویرایش ویدیو یا موسیقی، یا حتی کارهای سادهای مانند استریم محتوا را انجام میدهید. حتی اگر در حال ساخت برنامههای تحت وب باشید که خدمات مختلفی را به کاربران داخل شبکه یا عموم مردم ارائه میدهند، پهنای باند نقش کلیدی دارد.
اما عوامل دیگری نیز وجود دارند که بر سرعت واقعی تأثیر میگذارند. یکی از این عوامل «تأخیر» (latency) است.
لتنسی - تأخیر شبکه
تأخیر شبکه مدت زمانی است که طول میکشد تا داده از مبدأ به مقصد برود و سپس به مبدأ بازگردد. این یک سفر رفت و برگشت است و بسیار شبیه به تأخیر بین پرسیدن یک سوال و دریافت پاسخ است. در واقع، از دید فنی، ما میتوانیم این را با دستور ping مشاهده کنیم. میتوانیم هر میزبان را پینگ کنیم و تأخیر آن اتصال را ببینیم. میانگین تأخیر بین کامپیوتر من و yacobee.com حدود ۱۴ میلیثانیه است.
این عدد ممکن است عالی به نظر برسد و حداقل در اینترنت، خوب است. اما به خاطر داشته باشید که ما شبکههای محلی (LAN) نیز داریم. در یک شبکه محلی، ۱۳ میلیثانیه افتضاح است! تأخیر تقریباً بر همه جنبههای یک اتصال تأثیر میگذارد: بر پایداری اتصال، سرعت و موارد دیگر.
چند عامل باعث ایجاد تأخیر میشوند:
۱. فاصله: برای مثال، فاصله بین کامپیوتر من و روتر بسیار کم است. اما از آنجا که من در یک شبکه محلی هستم، تأخیر این اتصال بسیار پایین خواهد بود. در مقابل، تأخیر بین کامپیوتر من و سرور Lariccasts که مایلها دورتر است، ۱۳ میلیثانیه است.
۲. تجهیزات شبکه: هرچه تجهیزات بیشتری بین مبدأ و مقصد قرار دهید، تأخیر افزایش مییابد، زیرا این دستگاهها باید ترافیک را پردازش کنند و هرچه ترافیک بیشتری پردازش شود، تأخیر بیشتری ایجاد میشود.
۳. بار روی مقصد: این احتمالاً مهمترین عامل است. اگر مقصد یک سرور وب باشد، این سرور نه تنها باید درخواستهای ما، بلکه صدها هزار یا حتی میلیونها درخواست دیگر را پردازش کند. هرچه دادههای بیشتری برای پردازش وجود داشته باشد، پاسخها کندتر خواهند بود و در نتیجه تأخیر افزایش مییابد.
تأخیر همان وقفهای است، چه کوچک و چه بزرگ، که باعث میشود اتصال شما حتی با وجود پهنای باند مناسب، کند به نظر برسد.
ورژن کنترل vesion control
احتمالاً اولین چیزی که باید دربارهی دنیای توسعهی نرمافزار صحبت کنیم، مفهوم کنترل نسخه است. به این کار گاهی کنترل منبع یا کنترل کد منبع هم گفته میشود، ولی همهی این نامها یکی هستند. این ابزار به ما اجازه میدهد تغییرات روی کد منبع را دنبال کنیم. انواع مختلفی از کنترل نسخه وجود دارد، اما استاندارد رایج و معروف، گیت (Git) است.
پروژهی ما یا حداقل فایلهای داخل پروژه، داخل یک پوشهی بزرگ به نام مخزن یا ریپازیتوری (Repository) قرار دارد. وقتی تغییراتی روی کد منبعتان میدهید، میتوانید این تغییرات را کامیت (Commit) کنید. در واقع، شما با این کار یک عکس فوری یا «لحظهی ثبتشده» از وضعیت کدتان ایجاد میکنید. من همیشه فکر میکنم کد پروژهام مثل یک داستان است چون به مرور زمان تغییر میکند. میتوانم داستانِ اینکه چطور برنامهام را توسعه دادهام را ببینم و کنترل نسخه این کار را امکانپذیر میکند. چون هر کامیت یک عکس فوری است. اگر نیاز داشتید به نسخهی قبلی کد نگاه کنید، میتوانید به راحتی این کار را انجام دهید. همچنین میتوانید نسخههای مختلف را با هم مقایسه کنید تا مستقیماً تفاوتها را ببینید. این واقعاً یک قابلیت عالی است.
فرض کنید میخواهید کاری انجام دهید که ریسک دارد. مثلاً ممکن است بخواهید یک ویژگی پیچیده اضافه کنید یا صرفاً آزمایشی انجام دهید. البته شما نمیخواهید این کار را روی نسخهی اصلی و اصلیترین کد (که معمولاً به آن میگویند مستر یا شاخهی اصلی) انجام دهید، چون ممکن است مشکلاتی به وجود بیاورد. اما گیت ویژگیای دارد به نام شاخه (Branch). شما میتوانید از شاخهی اصلی یک شاخهی جدید بسازید و آنجا هر تغییراتی که خواستید بدهید بدون اینکه به شاخهی اصلی لطمه بزنید. و هر وقت راضی شدید، میتوانید این تغییرات را به شاخهی اصلی برگردانید یا اگر خواستید، کل آن شاخه را حذف کنید.
ولی اصل کار این است که کد اصلیتان را محافظت میکند. همهی این ویژگیها خیلی خوب است. حتی اگر فقط خودتان باشید و روی پروژهتان کار کنید، استفاده از گیت یک کار فوقالعاده است. اما وقتی با یک تیم کار میکنید، گیت یا کنترل نسخه حسابی خودش را نشان میدهد. هر نفر در تیم شما یک نسخه کپیشده از آن مخزن دارد، بعد تغییراتش را میتواند به مخزن اصلی ارسال کند. اگر وقتی تغییرات را میخواهید وارد کنید، تعارض وجود داشت (که معمولاً هست وقتی تیمی کار میکنید)، گیت ابزارهایی دارد که به شما کمک میکند این تعارضها را حل کنید.
پس چه در حال رفع باگ باشید، چه اضافه کردن ویژگی جدید یا حتی صرفاً آزمایش، کنترل نسخه به شما امکان میدهد کد پروژهتان امن، قابل همکاری و منظم باقی بماند.