۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

گیت چیست؟ کنترل نسخه برای برنامه نویسی مشترک

کنترل نسخه Git که برای توسعه هسته لینوکس اختراع شده است، اکنون میلیون ها پروژه را در سراسر جهان نیرو می دهد. می توانید با یا بدون GitHub از آن استفاده کنید.

کنترل نسخه Git که برای توسعه هسته لینوکس اختراع شده است، اکنون میلیون ها پروژه را در سراسر جهان نیرو می دهد. می توانید با یا بدون GitHub از آن استفاده کنید.

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

Git همچنین استاندارد کنترل نسخه برای GitHub و سایر سیستم‌های مدیریت کد منبع است و به طور گسترده در داخل devops برای پیاده‌سازی CI/CD استفاده می‌شود. برای توسعه‌دهندگانی که برنامه‌های خود را در Kubernetes یا دیگر پلت‌فرم‌های بومی ابری استقرار و مدیریت می‌کنند، GitOps بهترین روش‌ها را برای کار با خوشه‌ها و برنامه‌های کانتینری ارائه می‌دهد.

آیا Git یک زبان برنامه نویسی است؟

Git یک زبان برنامه نویسی نیست، اما برای برنامه نویسان رایانه ای که تقریباً به هر زبانی که می توانید نام ببرید کار می کنند بسیار مهم شده است. امروزه Git استاندارد de facto برای نرم افزاری است که به عنوان کنترل نسخه شناخته می شود. برنامه‌نویس‌ها از کنترل نسخه برای پیگیری به‌روزرسانی‌های پایگاه‌های کد بزرگ استفاده می‌کنند، در صورت نیاز به نسخه‌های قبلی برمی‌گردند و تغییرات ایجاد شده و همچنین افرادی که آنها را ایجاد کرده‌اند را مشاهده می‌کنند. این به بخشی جدایی ناپذیر از توسعه نرم افزار چابک تبدیل شده است و یکی از ویژگی های اصلی GitOps است که فلسفه devops چابک را به سیستم های مبتنی بر کانتینر گسترش می دهد. .

چرا Git نامیده می شود؟

نام Git کاملاً با تاریخچه آن گره خورده است. Git توسط شخصی که تقریباً نام او را می دانید ایجاد شده است: لینوس توروالدز، خالق Linux. Git در سال ۲۰۰۵ به طور خاص برای کمک به مدیریت توسعه هسته لینوکس ایجاد شد. توروالدز از بسیاری از سیستم‌های کنترل نسخه دیگر در آن زمان ناراضی بود و BitKeeper که مورد علاقه برخی از توسعه‌دهندگان هسته بود، منبع باز نبود. (این گواهی بر تأثیر توروالدز بر محاسبات است که یک پلتفرم نرم افزاری به اندازه Git که همه جا حاضر است، تنها دومین ادعای بزرگ او برای شهرت است.)

هنگامی که اولین نسخه Git عرضه شد، توروالدز غیرقابل تصور ارائه کرد انواع توضیحات برای نام آن. محتمل ترین توضیح این است که Git یک ترکیب سه حرفی است که به راحتی تلفظ می شد و قبلاً توسط دستور دیگری یونیکس استفاده نمی شد. این کلمه همچنین به نظر می رسد دریافت—مرتبط است زیرا می توانید از Git برای دریافت کد منبع از سرور استفاده کنید. کلمه git نیز در انگلیسی بریتانیایی یک اصطلاح خفیف سوء استفاده است – در صورتی که با نرم‌افزاری عصبانی می‌شوید. توروالدز اضافه کرد که اگر حال و هوای خوبی دارید ممکن است بگویید این مخفف “ردیاب اطلاعات جهانی” است و اگر در وضعیت بدی هستید “لعنتی کامیون احمق [بی ادب اینجا]” است.

چه کسی مالک Git است؟

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

Git در مقابل GitHub

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

چگونه مدل های زبان بزرگ را تست کنیم

Git به شما امکان می دهد از رایانه خود به عنوان یک مخزن مرکزی برای دیگران استفاده کنید یا آن را در جای دیگری راه اندازی کنید، اما بسیاری از ارائه دهندگان خدمات نیز هستند که خدمات میزبانی تجاری Git را ارائه می دهند. GitHub، که در سال ۲۰۰۸ تأسیس شد و در سال ۲۰۱۸ توسط مایکروسافت خریداری شد، با اختلاف بسیار برجسته‌ترین آنهاست و نه تنها خدمات میزبانی، بلکه انواع ویژگی های دیگر می‌توانید درباره GitHub از InfoWorld بیشتر بیاموزید، اما نکته مهمی که در حال حاضر باید به خاطر داشته باشید این است که در حالی که GitHub بر اساس توسعه با Git ساخته شده است، برای استفاده از Git نیازی به استفاده از GitHub ندارید.

کنترل نسخه با Git

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

مخزن Git

ما قبلاً به مفهوم مخزن اشاره کرده‌ایم. مخزن فضای مفهومی است که تمام بخش های پروژه شما در آن زندگی می کنند. اگر خودتان روی یک پروژه کار می کنید، احتمالاً فقط به یک مخزن نیاز دارید، در حالی که در یک پروژه مشترک، احتمالاً از یک مخزن مرکزی کار می کنید. مخزن مرکزی بر روی یک سرور یا یک ارائه دهنده مرکزی مانند GitHub میزبانی می شود و هر توسعه دهنده نیز مخزن خود را در رایانه خود خواهد داشت. (ما در یک لحظه بحث خواهیم کرد که چگونه فایل های کد موجود در تمام آن مخازن به درستی همگام سازی می شوند.)

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

Git commit

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

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

Git stash

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

شاخه Git و git ادغام می شوند

تا اینجا ممکن است commit‌ها را به‌عنوان مجموعه‌ای خطی از عکس‌های فوری کد که در طول زمان تکامل می‌یابند تصور کنید. اما یکی از جنبه های واقعا جالب و قدرتمند Git این است که می توانید از آن برای کار بر روی نسخه های مختلف برنامه خود به صورت موازی استفاده کنید، که برای توسعه نرم افزار چابک بسیار مهم است.

پیشنهاد OpenJDK ایجاد رکوردهای جاوا را ساده می کند

برای درک شاخه‌های Git و ادغام در عمل، تصور کنید برنامه‌ای به نام CoolApp دارید که نسخه ۱.۰ در حال تولید است. شما به طور پیوسته روی CoolApp 2.0 کار می‌کنید، با انواع ویژگی‌های سرگرم‌کننده جدید، که در قالب مجموعه‌ای از تعهدات در مخزن خود توسعه می‌دهید. اما بعد متوجه می‌شوید که CoolApp 1.0 یک نقص امنیتی جدی دارد و فوراً به یک پچ نیاز دارد. می‌توانید به commit خود در CoolApp 1.0 برگردید، پچ را ایجاد کنید و آن کد را به عنوان CoolApp 1.1 به تولید بفرستید – همه اینها بدون ایجاد مزاحمت یا اضافه کردن به سری تعهدات منتهی به CoolApp 2.0، که هنوز ۱.۰ را به عنوان والدین خود دارند. نسخه‌های ۱.۱ و ۲.۰ اکنون در شاخه‌های جداگانه پایگاه کد شما قرار دارند. از آنجا که نسخه ۱.۱ در حال تولید است در حالی که نسخه ۲.۰ در حال توسعه است، ما ۱.۱ را شعبه اصلی می نامیم.

هنگامی که CoolApp 2.0 آماده عرضه شد، باید کد و عملکرد جدید آن را با به‌روزرسانی امنیتی نسخه ۱.۱ ترکیب کنید. این فرآیند که ادغام دو شاخه نامیده می شود، بخش کلیدی جادوی Git است. Git سعی می کند یک commit جدید از دو “والد” متفاوت ایجاد کند، یعنی جدیدترین commit های دو شاخه. این commit جدید را با مقایسه پیشینیان خود تا نقطه ای که دو شاخه از هم جدا می شوند، ایجاد می کند، سپس تمام تغییرات ایجاد شده در امتداد هر دو شاخه را در commit جدید و ادغام شده یکپارچه می کند. اگر بخشی از اطلاعات – مثلاً یک بلوک کد خاص – در هر دو شاخه به روش‌های مختلف تغییر می‌کرد، Git این سؤال را که کدام نسخه در commit جدید تعلق دارد به توسعه‌دهنده باز می‌گرداند.

تسویه حساب Git

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

استفاده از Git برای همکاری

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

Git clone

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

ما قبلاً در مورد مفهوم مخزن مرکزی بحث کرده‌ایم. بسیار معمول است که پروژه‌ها چنین مخزنی را که در GitHub یا جاهای دیگر میزبانی می‌شود، به‌عنوان «منبع حقیقت» متعارف در مورد اینکه پایگاه کد پروژه چگونه به نظر می‌رسد، در نظر بگیرند. بیایید چنین ترتیبی را برای باقیمانده این مقاله فرض کنیم. با این حال، توجه داشته باشید که این سوال که مخزن مرکزی است، موضوع قراردادی است که توسط شرکت کنندگان پروژه توافق شده است و توسط خود Git اجرا نمی شود. در تئوری، می‌توانید مخازن مختلفی برای تبادل کد داشته باشید، بدون اینکه مخزن واحد مرکزی نباشد.

Git pull و Git push

ما بحث کرده‌ایم که چگونه Git می‌تواند دو شاخه از commit‌ها را در یک ماشین تطبیق دهد. می تواند همین کار را برای دو شاخه روی ماشین های جداگانه انجام دهد، که اساساً از تکنیک های مشابه استفاده می کند. فرآیندی که توسط آن یک شاخه بین ماشین‌ها جابه‌جا می‌شود، بسته به نحوه شروع، کشش یا فشار نامیده می‌شود. اگر شعبه ای را از یک سرور راه دور به دستگاه خود بیاورید، در حال کشیدن آن هستید. اگر در حال ارسال یک شاخه از دستگاه خود به دیگری هستید، در حال فشار دادن هستید.

مایکروسافت از Microsoft Copilot Studio رونمایی کرد

درخواست کشش Git

فشار دادن کد خود بر روی دستگاه دیگری – یا روی مخزن مرکزی که کل پروژه به آن وابسته است – ممکن است به نظر سخت باشد. سناریوی رایج‌تر، که برای ماهیت مشارکتی توسعه Git کلیدی است، درخواست کشش است. فرض کنید کد یک ویژگی جدید را نهایی کرده اید و می خواهید آن را در پایگاه کد پروژه خود ادغام کنید. شما یک درخواست کشش صادر می کنید، که به طور رسمی از مدیران پروژه می خواهد کد جدید شما را در مخزن مرکزی بکشند.

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

Git fork

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

Git با ویندوز

همانطور که قبلا ذکر شد، Git در اصل برای توسعه هسته لینوکس توسعه داده شد و به شکل یک سری ابزارهای خط فرمان است. ساختار و دستور دستور آن بسیار مبتنی بر یونیکس است، به این معنی که کم و بیش به صورت بومی بر روی سیستم‌عامل‌های مشابه یونیکس مانند لینوکس و macOS اجرا می‌شود. انتقال Git به ویندوز کمی پیچیده‌تر است و به Git bash متکی است، یک شبیه‌ساز پوسته Bourne برای ویندوز که در Git برای Windows

ادغام رابط کاربری گرافیکی و IDE

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

همچنین می‌توانید Git را در IDE‌های مورد علاقه خود، از جمله Eclipse و < ادغام کنید. a href="https://docs.microsoft.com/en-us/visualstudio/version-control/git-with-visual-studio?view=vs-2022" rel="nofollow">Microsoft Visual Studio.

آموزش Git: نحوه استفاده از Git و GitHub

آیا آماده هستید تا در مورد استفاده از دستورات Git و Git اطلاعات بیشتری کسب کنید؟ برای شروع، ما آموزش جامع و آسان برای دنبال کردن را توصیه می کنیم اطلسی. توجه داشته باشید که Atlassian این آموزش را در زمینه Bitbucket، که رقیب Atlassian برای GitHub است، در دسترس قرار می دهد، اما هنوز هم مقدمه ای عالی برای مبانی Git است.

اگر می خواهید نحوه استفاده از GitHub را یاد بگیرید، مارتین هلر خود InfoWorld یک آموزش عالی برای شما دارد. و اگر می‌خواهید جزئیات فنی نحوه عملکرد Git را در زیر پوشش‌ها بهتر درک کنید – به ویژه اینکه چگونه اجزای مختلف پروژه شما را ذخیره می‌کند – به «تعهدها عکس های فوری هستند، نه تفاوت” در وبلاگ GitHub.